Vue.js 如何在方法中模拟axios调用?
我试图在vuejs方法中模拟axios调用。这可能吗 以下是我的vue组件(SomeObj): 这是我的规范Vue.js 如何在方法中模拟axios调用?,vue.js,jestjs,Vue.js,Jestjs,我试图在vuejs方法中模拟axios调用。这可能吗 以下是我的vue组件(SomeObj): 这是我的规范 let mockData = {}; beforeEach(() => { jest.spyOn(axios, 'get').mockReturnValue(Promise.resolve(mockData)); }); let wrapper = shallowMount(SomeObj, { stubs: [], localVu
let mockData = {};
beforeEach(() => {
jest.spyOn(axios, 'get').mockReturnValue(Promise.resolve(mockData));
});
let wrapper = shallowMount(SomeObj, {
stubs: [], localVue, mocks: {
mockUrl: mockUrl,
$route: {
params: { testId: "123" }
}
}
});
it('is a Vue instance', () => {
expect(wrapper.isVueInstance()).toBeTruthy();
axios.get.mockResolvedValue(mockData);
wrapper.vm.callAxiosMethod();
})
当我查看覆盖率时,系统说callApi没有覆盖。您知道如何在函数中模拟axios调用吗?您的代码调用,因此您需要模拟该函数以返回模拟调用API
对象
以下是一个简化的工作示例:
code.js
import*作为axios从“axios”导入;
常数mockedUrl=http://mock-url';
导出常量callAxiosMethod=()=>{
const callApi=axios.create();
callApi.defaults.timeout=10000;
返回callApi.get(mockedUrl);//({
create:jest.fn().mockReturnValue({
默认值:{},
get:jest.fn().mockResolvedValue('模拟数据')
})
}));
测试(‘CalaXySoMead’,AsiNC())= { / /谢谢布瑞恩的信息。我使用它并且没有错误。但是,在我的覆盖中,它没有覆盖CalaAPI。GET(McKeDurl)。你知道为什么吗?我更新了我的答案,使用<代码> JEST。MOCK < /代码>,因为它有点干净。嗯……不知道为什么它不考虑<代码> CalAPI.GET。(mockedUrl)
已覆盖。您是否返回了承诺
和等待
它?是否捕获
仍在您的代码中…如果是,您需要添加一个抛出错误的测试以覆盖它。@arn arn
let mockData = {};
beforeEach(() => {
jest.spyOn(axios, 'get').mockReturnValue(Promise.resolve(mockData));
});
let wrapper = shallowMount(SomeObj, {
stubs: [], localVue, mocks: {
mockUrl: mockUrl,
$route: {
params: { testId: "123" }
}
}
});
it('is a Vue instance', () => {
expect(wrapper.isVueInstance()).toBeTruthy();
axios.get.mockResolvedValue(mockData);
wrapper.vm.callAxiosMethod();
})