在400上的axios模型的nock不返回定义的值

时间:2018-06-14 23:24:55

标签: reactjs axios chai nock

我正在使用nock用axios模拟我的ajax调用。 这是我的代码:

    describe("unSuccessful rest call",()=>{

    it('should dispatch types: SET_DROP_DOWN_CHECK_STATUS in order ', () => {
        nock(getRootUrl(ServiceUrls.prototype.getContactUsUrl())).get(getExtention(ServiceUrls.prototype.getContactUsUrl())).replyWithError(400, "test");


        const expectedActions = [
            {
                "type": SET_DROP_DOWN_CHECK_STATUS,
                "payload": "test"
            }
        ];


        return store.dispatch(setContactUsList({push:()=>{}})).then(() => {
            expect(store.getActions()[0]).to.eql(expectedActions[0]);

        })
    })


})

当我运行上述测试时,它会命中服务器并返回实际的错误消息,而不是我要求的测试。 有趣的是,当我使用上面的代码200时,它成功返回我定义的内容。 任何人都可以帮助我的方法出错吗?

1 个答案:

答案 0 :(得分:1)

当我尝试使用它并遇到类似问题时,不确定nock有什么问题。我使用axios-mock-adapter并发现了一个更简单的工具。

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';

const mock = new MockAdapter(axios);

afterEach(() => {
    mock.reset();
});

it('should fail when trying to search for documents', async () => {

        mock.onGet(SEARCH_ENDPOINT + formattedFields).reply(400, {
            details: [
                {
                    code: 400,
                    message: 'No claim number or DCN provided'
                }
            ]
        });

        const given = { fields: activeFields };
        const expected = [
            { type: types.FETCH_DOCS_STARTED },
            { type: types.FETCH_DOCS_FAILED, message: 'No claim number or DCN provided' }
        ];

        await store.dispatch(actions.fetchDocs(given));

        const actualDispatchedActions = store.getActions();
        expect(actualDispatchedActions).toEqual(expected);
    });