Для чего второй аргумент?

Я нахожу этот код в учебнике

...
import configureMockStore from 'redux-mock-store';

const middleware = [thunk];
const mockStore = configureMockStore(middleware);
...

it('should create BEGIN_AJAX_CALL & LOAD_COURSES_SUCCESS', (done) => {

    const expectedActions = [
        {type: types.BEGIN_AJAX_CALL},
        {type: types.LOAD_COURSES_SUCCESS, body: {
            courses: [{id:'clean-code', title:'Clean Code'}]
        }}
    ];

    const store = mockStore({courses:[]}, expectedActions);

    store
        .dispatch(courseActions.loadCourses())
        .then(() => {
            const actions = store.getActions();
            expect(actions[0].type).toEqual(types.BEGIN_AJAX_CALL);
            expect(actions[1].type).toEqual(types.LOAD_COURSES_SUCCESS);
            done();
        });
});

и весь бит с expectedActions не имеет смысла.

Документы говорят, что если есть второй аргумент store это должна быть функция; (нет объяснения, что эта функция будет делать, хотя).

Сначала я подумал, что по какой-то причине он заставляет совершать какие-то действия в магазине, но быстро console.log сказал мне, что это не так.

Потому что только dispatch заставляет действия накапливаться.

Так это ошибка в тексте или какая-то мудрость для дальнейшего изучения?

1 ответ

Решение

Эта функция была удалена в версии 1, но вы можете найти пример в предыдущих документах.

Параметр expectedActions используется для тестирования. Вы можете создать фиктивный магазин с массивом действий, а затем отправить 1-е действие. Это действие приведет к тому, что другие другие действия будут переадресованы (рассылка / следующая) через thunks/api middleware/etc... Тест проверит, все ли действия в expectedActions Массив поступил в магазин:

import configureStore from 'redux-mock-store';

    const middlewares = []; // add your middlewares like `redux-thunk` 
    const mockStore = configureStore(middlewares);

    // Test in mocha 
    it('should dispatch action', (done) => {
      const getState = {}; // initial state of the store 
      const action = { type: 'ADD_TODO' };
      const expectedActions = [action];

      const store = mockStore(getState, expectedActions, done);
      store.dispatch(action);
    })
Другие вопросы по тегам