没有调用Prop-function mock

时间:2018-02-27 17:22:00

标签: reactjs jestjs enzyme

我有一个像这样的组件函数:

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}},但期望失败。为什么呢?

1 个答案:

答案 0 :(得分:1)

您需要在测试中使用await关键字instance.onSomethingDoSomething(),因为它是异步功能。