我正在使用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时,它成功返回我定义的内容。 任何人都可以帮助我的方法出错吗?
答案 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);
});