首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何模拟一个方法中的axios调用?

如何模拟一个方法中的axios调用?
EN

Stack Overflow用户
提问于 2019-04-23 03:29:43
回答 1查看 606关注 0票数 1

我正在尝试模拟vuejs方法中的axios调用。这个是可能的吗?

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

代码语言:javascript
复制
 methods:{
        callAxiosMethod() { 
          const callApi= axios.create();
          callApi.defaults.timeout = 10000;
          callApi.get(mockedUrl)
          .then(response => {
             console.log('response is ' + response);
          })
          .catch(e => {});
        }
    }

这是我的spec.js

代码语言:javascript
复制
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调用吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-23 09:22:40

您的代码调用axios.create,因此需要模拟该函数以返回模拟的callApi对象。

以下是一个简化的工作示例:

code.js

代码语言:javascript
复制
import * as axios from 'axios';

const mockedUrl = 'http://mock-url';

export const callAxiosMethod = () => {
  const callApi = axios.create();
  callApi.defaults.timeout = 10000;
  return callApi.get(mockedUrl);  // <= return the Promise so it can be awaited
}

code.test.js

代码语言:javascript
复制
import { callAxiosMethod } from './code';

jest.mock('axios', () => ({
  create: jest.fn().mockReturnValue({
    defaults: {},
    get: jest.fn().mockResolvedValue('mocked data')
  })
}));

test('callAxiosMethod', async () => {  // <= async test function
  const response = await callAxiosMethod();  // <= await the Promise
  expect(response).toBe('mocked data');  // Success!
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55800029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档