[英]Testing async action creator in redux
我有以下動作創建者:
export const doSomething () {
return (dispatch, getState) => {
setTimeout(function () {
dispatch(someAction('bbb'));
}, 3000);
}
}
它將狀態的某些部分更改為bbb
,其中狀態是通過組合化簡器創建的。 我該如何測試?
import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'
it('', function (done) {
const middlewares = [ thunk ]
const mockStore = configureMockStore(middlewares)
const store = mockStore({}) // how should the store look like?
return store.dispatch(someAction('bbb'))
.then(() => {
expect(store.getActions()).toEqual(expectedActions)
})
});
模擬商店應該是什么樣子? 這是正確的方法嗎? 我該如何測試?
我認為您試圖在一項測試中進行太多測試,甚至更多,您正在嘗試測試不應測試的零件(例如,存儲/發貨)。
有一個原因叫它“單元測試”
我將其更改為兩個測試:
reducer應該是一個純函數,給定一個輸入,它應該返回一個輸出(現在暫時忽略狀態),這里只需確保reducer已將值插入正確的位置。
操作,為派遣函數創建一個間諜並將其自己提供給操作結果函數(myAction()),並使用Expect(dispatchSpy).toHaveBeenCalledWith。 您也可以輕松創建getState函數:
const getState = () => ({ obj1: 5, obj2: "333"})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.