首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux-mock-store的状态在分派操作后没有更新

redux-mock-store的状态在分派操作后没有更新
EN

Stack Overflow用户
提问于 2016-08-11 21:12:25
回答 1查看 1.7K关注 0票数 0

我有一个记录器中间件,它显示即将被调度的操作和下一个状态。

我正在为我的操作编写测试,并在mock store中分派操作。这些成功分派,但是模拟存储状态没有被更新(如前面提到的记录器所示)。

请注意,我使用的是redux-mock-store。

代码语言:javascript
复制
//authActionTest.js

it('creates LOGIN_SUCCESS when successful login has occured', ()=>{

//array of expected actions to be dispatched.
const expectedActions = [
  { type: constants.LOGIN_REQUEST },
  { type: 'LOGIN_SUCCESS',
            payload: {
                uid: '123abc',
                role: 'clinician'
    }}
]
const store = mockStore({ auth : {} })

return store.dispatch(actions.loginUser('abc@123.com', 'password123'))
expect(store.getActions()).toEqual(expectedActions)
})

记录器显示以下内容:

代码语言:javascript
复制
//logger
dispatching({ type: 'LOGIN_REQUEST })
next state { auth: {} }
dispatching({ type: 'LOGIN_SUCCESS',
   payload: { uid: 123,
              role: 'clinician'
          })
next state { auth: {} }
EN

回答 1

Stack Overflow用户

发布于 2016-08-13 09:29:26

您正在尝试测试异步操作。

因此,要回答这个问题,我们可以遵循redux文档的建议。

代码语言:javascript
复制
  describe('async actions', () => {
    afterEach(() => {
      nock.cleanAll();
    });
    it('creates LOGIN_SUCCESS on successful login', () => {
      nock('http://example.com/')
        .get('/login')
        .reply(200, payload: { uid: 123, role: 'clinician' });

      const expectedActions = [
        { type: types.LOGIN_REQUEST },
        { type: types.LOGIN_SUCCESS, payload: { uid: 123, role: 'clinician' } },
      ];
      const store = mockStore({ auth: {} });

      return store.dispatch(actions.loginUser())
        .then(() => { // return of async actions
          expect(store.getActions()).toEqual(expectedActions);
        });
    });
  });

您可能需要对上面的代码进行一些修改才能使其正常工作。

如果您使用的是axios,我建议使用moxios包而不是nock。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38897409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档