私はAppというコンポーネントを持っていますが、このコンポーネントの内部にはfetchContent
というメソッドがあります。このメソッドはcomponentWillMountメソッド内で呼び出され、コンポーネントをマウントするときに実際に呼び出されるかどうかを確認しようとしています。あなたが見ることができるようにcomponenWillMount内で実行されるコンポーネントメソッドをテストすることができません
export default class App extends Component {
fetchContent = (current) => {
...do some stuff in here
}
componentWillMount() {
this.fetchContent('techcrunch');
}
、私は私のコンストラクタでコンポーネントにバインドするのではなく、矢印の機能を使用しています。以下は、私の方法です。クリックイベントのために呼び出されるメソッドでもあるため、バインドする必要があります。しかし
、私はこのコンポーネントで私のユニットテストを実行しようとすると、それは言ってエラーをスローするので、私は、仕事に私のスパイ/スタブを取得することはできません。以下は
TypeError: Attempted to wrap undefined property fetchContent as function
it('should fetch the content when component mounts',() => {
sinon.spy(App.prototype, 'fetchContent');
wrapper = mount(<App />);
expect(wrapper.instance().fetchContent).to.have.been.calledOnce;
});
ただし、私のメソッドがバインドされていないか、矢印機能を使用していない場合、正常に動作します。
どのようにそれを達成するためのアイデアですか?
'jest.fn()'を使用してコンポーネントメソッドをモックし、そのモックされた関数が呼び出されたかどうかを確認できます。 –