Почему Redux Promise Middleware не отправляет отклоненное действие для моего примера кода?

Я использую fetch-mock, redux-mock-store, обещание-промежуточное программное обеспечение для тестирования реализации моего приложения на основе избыточности. У меня есть следующий код:

import configureMockStore from 'redux-mock-store';
import promiseMiddleware from 'redux-promise-middleware';
import fetchMock from 'fetch-mock';
import thunk from 'redux-thunk';
import createLogger from 'redux-logger';
import { bindActionCreators } from 'redux';
import { ACTION_1, hostNameSearchActions }
    from '../../../src/actions/hostNameSearchActions';

const middlewares = [thunk, promiseMiddleware(), createLogger()];
let mockStore = configureMockStore(middlewares);
const SERVICE_URL = 'http://url_to_the_service';
describe('Testing thunk actions', () => {
let store = mockStore({ hostData: { key1 :'value'} });
const aHostNameSearch = bindActionCreators({ ...hostNameSearchActions }, store.dispatch).hostNameSearch;
afterEach(() => {
        fetchMock.reset();
        fetchMock.restore();
        mockStore = configureMockStore(middlewares);
        store = mockStore({ hostData: { key1 :'value'} });
    });
it('ACTION_1_PENDING, ACTION_1_REJECTED dispatched, payload matches expected payload', (done) => {
    fetchMock
        .mock(`${SERVICE_URL}`,
            404 );

    const expectedActions = [
        { type: `${ACTION_1}_PENDING` },
        { type: `${ACTION_1}_REJECTED`, payload: {error: 'test.body.error.message'}}
    ];
    aHostNameSearch().then(() => {
        expect(store.getActions()).toEqual(expectedActions);
        done();
    });

});
});

Проблема в том, что вызов 404, который я издеваюсь с retchMock, всегда заканчивается разрешением ACTION_1_FULFILLED. почему это так? Я неправильно высмеиваю звонок?

1 ответ

Промежуточное ПО Redux Promise всегда отправляет отклоненное действие, если ему дано отклоненное действие. Если ваше смоделированное действие всегда заканчивается выполненным действием, то, когда вы ожидаете отклоненное действие, это происходит потому, что полезная нагрузка обещания выполнена.

Это может произойти, если у вас есть какие-либо побочные эффекты (например, любые функции, которые используют then метод на обещание) и не следует правильно передавать ошибку до промежуточного программного обеспечения. Без большего контекста, однако, невозможно дать вам окончательный ответ. Было бы полезно, если бы вы включили hostNameSearchActions,

Другие вопросы по тегам