私は現在、反応サービス(redux-sagaを使用している)の1つでJestのユニットテストを行っています。これらのサービスは、このサービスに固有の他のAPI、セレクタ、およびアクション以外のAPI、セレクタ、およびアクションを呼び出します。Jestとの反応に関するユニットテスト:異なる機能からアクションをモックする方法は?
は、したがって、これらの外側API、セレクタ、およびアクションを模擬するために、私はこのように私のテストファイルでそれらをあざけりために冗談を使用:
// API mock example
jest.mock('../otherFeatureService/api'),() => {
return { myApi: jest.fn() };
}
// reducer mock example
jest.mock('../otherFeatureService/reducer'),() => {
return { isConnected: (fake) => jest.fn(fake) };
}
// API action example
jest.mock('../otherFeatureService/actions'),() => {
return { myAction:() => jest.fn() };
}
すべてはモックアクションを除いて、私のテストでは正常に動作します。 しかし、私は私が私のモックアクションのために得たものと私の期待される結果を比較してみました、以下のメッセージが表示されました:
expect(received).toEqual(expected)
Expected value to equal:
{"@@redux-saga/IO": true, "PUT": {"action": [Function mockConstructor], "channel": null}}
Received:
{"@@redux-saga/IO": true, "PUT": {"action": [Function mockConstructor], "channel": null}}
Difference:
Compared values have no visual difference.
あなたはそれがアクションにのみ動作しない理由についてどんな考えを持っていますか? (私はテストのために 'redux-saga-testing'からsagaHelperを使用しています)
ありがとう。 printfx000。
一般に、ES関数は等価なコードと名前を持っていても、等しくはありません。あなたのケースでは、実際にはアクションが呼び出されないので、テストのいくつかの場所では、アクション関数を直接渡しますが、結果を渡す必要があります。これは単純な直列化可能オブジェクトです。 –