酵素のドキュメントはSinonとライフサイクルメソッドをスパイの次の例が含まれています:冗談から、この使用してモックの機能と同等ですJest and EnzymeでReactコンポーネントのライフサイクルメソッドをモックする方法は?全DOMレンダリング<a href="http://airbnb.io/enzyme/docs/api/mount.html" rel="nofollow noreferrer">here</a>ため
describe('<Foo />',() => {
it('calls componentDidMount',() => {
sinon.spy(Foo.prototype, 'componentDidMount');
const wrapper = mount(<Foo />);
expect(Foo.prototype.componentDidMount.calledOnce).to.equal(true);
});
});
何?
私はCreate-React-Appを使用していますが、Jestで同じことが達成できればSinonは含まれません。
は、ここで私はテストが見えるように期待するものです:それは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
は、同じ機能のスパイを参照していません。
モック関数の実際の動作に関するJestドキュメントは少し制限されています。私は、jest.fn()がやっていることについて、hereというディスカッションを続けましたが、実際にはsinon.spy()と等価ではないようです。
このテストをJestでどのように複製できますか?
リアクションライフサイクルメソッドが呼び出されたかどうかをテストしようとしていますか?なぜあなたはそれをしたいのですか?これは、React自体のテストケースでなければなりません。ライフサイクルメソッド内から呼び出す機能をテストしようとする必要があります。このテストでは、アプリケーションに価値が追加されません。 –