【发布时间】:2023-03-03 23:39:01
【问题描述】:
我正在尝试测试一个连接的反应组件,但是一旦包装它,我无法使用 instance() 获取它的实例,它返回 null。对于非连接组件,它确实返回实例,有什么区别?如何获取连接组件的实例?
it('connected component', () => {
const wrapper = mount(
<Provider store={store}>
<BrowserRouter>
<ConnectedComponent />
</BrowserRouter>
</Provider>
)
const myComp = wrapper.find(ConnectedComponent)
expect(myComp).toHaveLength(1) // passes
console.log(myComp.instance()) //null
})
it('non-connected component', () => {
const wrapper = mount(
<Provider store={store}>
<BrowserRouter>
<NonConnectedComponent />
</BrowserRouter>
</Provider>
)
const myComp = wrapper.find(NonConnectedComponent)
expect(myComp).toHaveLength(1) // passes
console.log(myComp.instance()) // prints the instancce
})
【问题讨论】:
-
你试过用dive()而不是instance()吗?
-
我得到 myComp.dive 不是一个函数,在这里也找不到 ReactWrapper api 中的潜水函数:github.com/airbnb/enzyme/blob/master/docs/api/mount.md
-
也许这个问题可以帮到你github.com/airbnb/enzyme/issues/1002
-
我在打开这个主题之前阅读了它,无论如何谢谢
-
您是否尝试过通过名称而不是变量本身来获取它?
const myComp = wrapper.find('NonConnectedComponent')(注意名称周围的引号)。不是最漂亮的解决方案,但如果可行,则适合解决方法。