[英]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.