此处的完整 DOM 渲染的酶文档包含以下使用 Sinon 监视生命周期方法的示例:
describe('<Foo />', () => {
it('calls componentDidMount', () => {
sinon.spy(Foo.prototype, 'componentDidMount');
const wrapper = mount(<Foo />);
expect(Foo.prototype.componentDidMount.calledOnce).to.equal(true);
});
});
使用 Jest 的模拟函数与此等效的是什么?
我正在使用 Create-React-App,如果使用 Jest 可以实现同样的效果,我宁愿不包括 Sinon。
这是我希望测试的样子:
describe('<App />', () => {
it('calls componentDidMount', () => {
jest.fn(App.prototype, 'componentDidMount');
const wrapper = mount(<App />);
expect(App.prototype.componentDidMount.mock.calls.length).toBe(1);
});
});
在这种情况下,App.prototype.componentDidMount
不会像使用 Sinon 那样引用相同的函数 spy。
关于模拟函数实际工作方式的 Jest 文档有点有限。我随后的讨论在这里周围有什么jest.fn()是干什么的,但现在看来,这不是真的等同于sinon.spy()。
如何使用 Jest 复制该测试?