1. ホーム
  2. javascript

[解決済み] Jestのスパイ機能

2022-03-04 19:37:31

質問

MochaからJestに移行しているのですが、Reactのメソッドをスパイする方法はないでしょうか?例えば、私のコンポーネントに以下のメソッドがあるとします。 sdk ライブラリは、jQuery Ajax 呼び出しを構築しているだけです)。

getData() {
    sdk.getJSON('/someURL').done(data => {
        this.setState({data});
    });
}

Sinonを使って、プロトタイプをスパイしてテストしてみると、こんな感じ。

it('should call getData', () => {
    sinon.spy(Component.prototype, 'getData');
    mount(<Component />);
    expect(Component.prototype.getData.calledOnce).to.be.true;
});

これにより、メソッドをモックすることなくコードカバレッジを確保することができます。Jestに同様の機能はありますか?

EDIT: また、この機能が存在しない場合、APIコールをテストするための次善の策は何でしょうか?

どのように解決しますか?

があります。 spyOn メソッドは、数日前のv19で導入され、あなたが探しているものを正確に行うことができます。