0
我目前正在用Jest對我的一個反應服務(使用redux-saga)進行單元測試。這些服務調用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功能永遠不會相等,即使它們具有相等的代碼和名稱。在你的情況下,action實際上並沒有被調用,所以也許在測試的某個地方,你直接傳遞action函數,但是必須傳遞它的結果,這是一個普通的可序列化的對象。 –