相关疑难解决方法(0)

使用Jest监视componentDidMount中的方法调用

我最近想测试一些自定义方法在componentDidMountReact组件的方法中有条件地调用.

componentDidMount() {
  if (this.props.initOpen) {
    this.methodName();
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Jest作为我的测试框架,其中包括jest.fn()模拟/间谍.我已经读过,通过做类似以下的事情,用Sinon测试这将是相当微不足道的:

sinon.spy(Component.prototype, "methodName");
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)

我正试图用Jest重新创建这个:

Component.prototype.methodName = jest.fn();
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)

此代码失败并引发以下错误:

jest.fn() value must be a mock function or spy.
Received:
  function: [Function bound mockConstructor]
Run Code Online (Sandbox Code Playgroud)

是否可以使用Jest测试此功能?如果是这样,怎么样?

javascript testing reactjs jestjs enzyme

37
推荐指数
2
解决办法
5万
查看次数

标签 统计

enzyme ×1

javascript ×1

jestjs ×1

reactjs ×1

testing ×1