繁体   English   中英

在Redux中测试异步动作创建者

[英]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)
    })
});

模拟商店应该是什么样子? 这是正确的方法吗? 我该如何测试?

我认为您试图在一项测试中进行太多测试,甚至更多,您正在尝试测试不应测试的零件(例如,存储/发货)。

有一个原因叫它“单元测试”

我将其更改为两个测试:

  1. reducer应该是一个纯函数,给定一个输入,它应该返回一个输出(现在暂时忽略状态),这里只需确保reducer已将值插入正确的位置。

  2. 操作,为派遣函数创建一个间谍并将其自己提供给操作结果函数(myAction()),并使用Expect(dispatchSpy).toHaveBeenCalledWith。 您也可以轻松创建getState函数:

     const getState = () => ({ obj1: 5, obj2: "333"}) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM