Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何在方法中模拟axios调用?_Vue.js_Jestjs - Fatal编程技术网

Vue.js 如何在方法中模拟axios调用?

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

我试图在vuejs方法中模拟axios调用。这可能吗

以下是我的vue组件(SomeObj):

这是我的规范

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();
    })