1
const middlewares = [ thunk ];
const mockStore = configureStore(middlewares);

const originals = {
    Actions: {}
};
const mocks = {
    Actions: {
        addPasswordResetRequest: spy(() =>{
            return [
                {type: REQUEST_ADD_PASSWORD_RESET_REQUEST},
                {type: REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS}
            ];
        })
    }
}

//(have functions to mock actions)

...

it('should create an action to request a password reset', (done) => {
    nock('http://localhost:8080/')
    .post('/password-reset-requests')
    .reply(200);
    var email = "test@email.com";
    const expectedActions= [
        {type: REQUEST_ADD_PASSWORD_RESET_REQUEST},
        {type: REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS}
    ];
    const store = mockStore({}, [
        {type: REQUEST_ADD_PASSWORD_RESET_REQUEST},
        {type: REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS}
    ], done);
    store.dispatch(Actions.addPasswordResetRequest(email));
    unMockActions();


 });

我得到的回应:

Error: Expected [ { type: 'REQUEST_ADD_PASSWORD_RESET_REQUEST' },
{type: 'REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS' } ] to equal 
{type: 'REQUEST_ADD_PASSWORD_RESET_REQUEST' }

当我运行此代码时,我只返回第一个操作,而不是第二个。它不是一个列表,它只是一个动作。我需要测试动作的顺序,而不是是否调用了一个动作。

4

1 回答 1

0

我在尝试测试具有多个动作类型的减速器时遇到了这种情况。使用 Mocha,您一次只能测试 1 个动作。我还没有测试任何“重击”动作创建者,但我希望模拟动作创建者会测试第二个动作,并且应该在对该动作创建者的测试中捕获。

于 2016-01-13T09:39:49.097 回答