Для чего второй аргумент?
Я нахожу этот код в учебнике
...
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);
})