這裏是一個廣義的例子:如何在一個笑話測試中檢查一個thunk動作創建者內的thunk動作是否已經發出?
// myActions.js
export const actionOne =() => (dispatch) => {
dispatch(actionTwo());
};
export const actionTwo =() => ({
type: 'SOME_TYPE',
});
我想測試actionTwo
已要麼調用或布控,最理想的情況是測試知道什麼是actionTwo
回事什麼,因爲我有一個不同的測試那需要照顧。
我使用redux-mock-store
派遣測試行動的嘲笑存儲和調用store.getActions()
,以找出是否在thunk行動的創建者中預期的動作已經出動。我覺得在這個特定的場景中這不是正確的方法,因爲那樣測試會比測試更多地進行測試。我真的只想知道是否已經調用了actionTwo
。
我知道spyOn
和jest.mock
,但我一直無法使用任何一個來解決我的問題。以下是廣義測試的樣子:
// myActions.test.js
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import * as actions from 'myActions';
const mockStore = configureMockStore([thunk]);
test('actionOne',() => {
const store = mockStore();
return store.dispatch(actions.actionOne()).then(() => {
// TODO: check if actions.actionTwo was called
});
});
test('actionTwo',() => {
const store = mockStore();
return store.dispatch(actions.actionTwo()).then(() => {
expect(store.getActions()).toEqual([{ type: 'SOME_TYPE' }]);
});
});
我很感激任何建議!
感謝您的回覆,但我不相信這是正確的方式。想象一下'actionTwo'不是一個簡單的動作創造者,而是一個thunk,可能甚至有條件地調度自己的行爲。我不想在'actionOne'的測試中知道任何邏輯,我只是想確保'actionTwo'完全被調用,甚至只是調用該函數。有沒有簡單的方法來實現這一目標? –
同意。我不想測試這個動作的執行情況(它在別處測試過),我只是想測試它被調用。 – Matthew