【问题标题】:redux-mock-store store's state is not updating after dispatching actions调度操作后 redux-mock-store 商店的状态未更新
【发布时间】:2016-12-18 06:06:34
【问题描述】:

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

我正在为我的操作编写测试,并且在模拟商店中我正在调度操作。这些成功调度,但是模拟存储状态没有被更新(如上述记录器所示)。

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

//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)
})

记录器显示以下内容:

//logger
dispatching({ type: 'LOGIN_REQUEST })
next state { auth: {} }
dispatching({ type: 'LOGIN_SUCCESS',
   payload: { uid: 123,
              role: 'clinician'
          })
next state { auth: {} }

【问题讨论】:

    标签: javascript testing mocking redux redux-mock-store


    【解决方案1】:

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

    所以要回答这个问题,我们可以按照 redux 文档的建议进行操作。

      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。

    【讨论】:

      猜你喜欢
      • 2019-12-04
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      相关资源
      最近更新 更多