Jest报告说,来自酶浅层组件的方法尚未在componentDidMount中调用



所以我有一个通用类组件:

import React, { Component } from "react";
export default class CompTest extends Component {
  someFunc() {}
  componentDidMount() {
    this.someFunc();
  }
  render() {
    return <div>Hey</div>;
  }
}

我想检查someFunc是否至少被调用一次(在componentDidMount内)

describe("<CompTest /> componendDidMount", () => {
  it("should call someFun()", () => {
    const wrapper = shallow(<CompTest />);
    const instance = instance();
    jest.spyOn(instance, "someFun");
    expect(instance.someFunc).toHaveBeenCalledTimes(1);
  });
});

但是我得到: Expected mock function to have been called one time, but it was called zero times.

根据酶v3文档:As of Enzyme v3, the shallow API does call React lifecycle methods such as componentDidMount and componentDidUpdate.

我的测试有什么问题?谢谢。

(酶保持者在这里)

问题是,在原始方法已传递到渲染树中后,您正在监视someFunc方法。试试这个:

describe("<CompTest /> componendDidMount", () => {
  it("should call someFun()", () => {
    jest.spyOn(CompTest.prototype, 'someFunc');
    const wrapper = shallow(<CompTest />);
    expect(wrapper.instance().someFunc).toHaveBeenCalledTimes(1);
  });
});

相关内容

  • 没有找到相关文章

最新更新