所以我有一个通用类组件:
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);
});
});