首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Redux Promise Middleware没有为我的示例代码分派拒绝的操作?

为什么Redux Promise Middleware没有为我的示例代码分派拒绝的操作?
EN

Stack Overflow用户
提问于 2018-01-18 00:01:40
回答 1查看 650关注 0票数 0

我使用fetch-mock,redux-mock-store,promise中间件来测试我的应用程序的redux实现。我有以下代码:

代码语言:javascript
复制
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();
    });

});
});

问题是,我用retchMock模拟的404调用最终总是被解析为ACTION_1_FULFILLED。为什么会是这样呢?我是否错误地模拟了呼叫?

EN

回答 1

Stack Overflow用户

发布于 2018-04-30 20:14:25

Redux Promise Middleware总是在给出拒绝的操作时调度拒绝的操作。如果您的模拟操作最终总是一个已实现的操作,那么当您期望一个被拒绝的操作时,这是因为promise有效负载已经实现。

如果您有任何副作用(例如,任何使用promise上的then方法的函数),并且没有正确地将错误传递到中间件,就会发生这种情况。然而,如果没有更多的上下文,就不可能给你一个明确的答案。如果你包含了你的hostNameSearchActions,那将会很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48305242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档