我有一个像这样的组件函数:
onSomethingDoSomething = async (arg) {
/* logic */
const result = await this.props.theFunctionIWantToTest()
/* more logic */
}
使用Jest / Enzyme我试图声明this.props.theFunctionIWantToTest
被调用时已调用onSomethingDoSomething
。
通过一系列日志记录语句,我可以看到theFunctionIWantToTest
实际上是在我的测试和中通过在我的组件中记录console.log(theFunctionIWantToTest)
来调用的,我可以看到函数本身是一个模拟函数。但是,
expect(instance.props.theFunctionIWantToTest).toHaveBeenCalled()
导致失败:
Expected mock function to have been called
我的测试设置如下:
const props = {
theFunctionIWantToTest: jest.fn()
}
const wrappedComp = mount(
<Provider store={store}>
<MemoryRouter>
<MyComponent {...props} />
</MemoryRouter>
</Provider>)
const instance = wrappedComp.find(MyComponent).getNode()
instance.onSomethingDoSomething()
expect(instance.props.theFunctionIWantToTest).toHaveBeenCalled()
再一次,在console.log
中抛出onSomethingDoSomething
我可以看到我测试过的函数的函数类型是一个模拟器,我可以看到在 {{之后记录的模拟结果调用1}},但期望失败。为什么呢?
答案 0 :(得分:1)
您需要在测试中使用await
关键字instance.onSomethingDoSomething()
,因为它是异步功能。