我正在Vue应用中运行以下测试:
import axios from 'axios';
import flushPromises from 'flush-promises';
import MockAdapter from 'axios-mock-adapter';
import TenantAlertService from '@/services/TenantAlertService';
import ServiceUrlProvider from '@/utils/ServiceUrlProvider';
import userAlerts from '@/store/modules/userAlerts';
import AlertToPlain from '@/transform/AlertToPlain';
import Alert from '@/models/Alert';
describe('TenantAlertService Service', () => {
let mock;
let data;
const tenantCode = 'RedAlert';
const id = 'zyx-abc';
const personId = '123456';
const appCode = 'asdfklj3';
const message = {
text: 'foo',
template: 'MY_TEMPLATE',
};
const person = {
id: personId,
};
const messageUrl = ServiceUrlProvider.gmiUrl()
.concat('/tenant/')
.concat(tenantCode)
.concat('/person/')
.concat(id)
.concat('/message');
const responseUrl = ServiceUrlProvider.gmiUrl()
.concat('/tenant/')
.concat(tenantCode)
.concat('/person/')
.concat(id)
.concat('/message/response');
const sendMessageUrl = ServiceUrlProvider.gmiUrl()
.concat('/tenant/')
.concat(tenantCode)
.concat('/app/')
.concat(appCode)
.concat('/template/')
.concat(message.template)
.concat('/person/')
.concat(person)
.concat('/message');
beforeEach(() => {
mock = new MockAdapter(axios);
data = { response: true };
});
it('fetchAll should be called', async () => {
const messageData = [
'ele1',
];
const responseData = [
'ele2',
];
mock.onGet(messageUrl).reply(200, messageData);
mock.onGet(responseUrl).reply(200, responseData);
const resp = await TenantAlertService.fetchAll({ tenantCode, id });
expect(resp.data).toEqual(['ele1', 'ele2']);
});
it('sendMessage should be called', async () => {
mock.onPost(sendMessageUrl).reply(200, data);
const resp = await TenantAlertService.sendMessage({
tenantCode,
appCode,
personId,
message,
});
expect(resp.status).toBe(200);
});
/* Store Actions */
it('store sendMessage', async () => {
const context = {
dispatch: jest.fn(),
getters: {
getComponent: 'Component 1',
},
};
mock.onPost(sendMessageUrl).reply(200, new Alert({}));
userAlerts.actions.sendMessage(context, {
tenantCode,
appCode,
person,
message,
});
await flushPromises();
expect(context.dispatch).toHaveBeenCalledWith('addOneSorted', new AlertToPlain(new Alert({})));
});
});
并在最近的两个测试(sendMessage should be called
和store sendMessage
)中获得以下结果:
Request failed with status code 404
at createErrorResponse (node_modules/axios-mock-adapter/src/utils.js:117:15)
at Object.settle (node_modules/axios-mock-adapter/src/utils.js:97:16)
at handleRequest (node_modules/axios-mock-adapter/src/handle_request.js:78:11)
at node_modules/axios-mock-adapter/src/index.js:18:9
at MockAdapter.<anonymous> (node_modules/axios-mock-adapter/src/index.js:17:14)
at dispatchRequest (node_modules/axios/lib/core/dispatchRequest.js:59:10)
我正在为通过的其他19个测试中的axios调用模拟运行完全相同的配置,因此我可以肯定地确定问题不在我的axios配置(例如,here中)。>
我是否还缺少其他可能导致此错误的信息?