【问题标题】:Mock axios and kitsu with jest用玩笑模拟 axios 和 kitsu
【发布时间】:2019-10-24 22:21:23
【问题描述】:

我正在创建一些测试,并使用 Kitsu (https://github.com/wopian/kitsu/tree/master/packages/kitsu) 作为客户端来使用 API。

我需要模拟 API 请求,但我不能。 Kitsu 里面用的是 axios,不知道怎么模拟结构:

Kitsu {
  camel: [Function: index],
  resCase: [Function: index$1],
  plural: [Function: pluralize] {
    plural: [Function],
    isPlural: [Function],
    singular: [Function],
    isSingular: [Function],
    addPluralRule: [Function],
    addSingularRule: [Function],
    addUncountableRule: [Function],
    addIrregularRule: [Function]
  },
  headers: {
    Accept: 'application/vnd.api+json',
    'Content-Type': 'application/vnd.api+json'
  },
  axios: [Function: wrap] {
    request: [Function: wrap],
    getUri: [Function: wrap],
    delete: [Function: wrap],
    get: [Function: wrap],

我需要在 axios 属性中模拟 get 方法。 我怎么能用 jest 做到这一点? 谢谢

【问题讨论】:

    标签: javascript jestjs


    【解决方案1】:

    您可以使用axios-mock-adapter (https://www.npmjs.com/package/axios-mock-adapter)

    例如

    const axios = require('axios');
    const MockAdapter = require('axios-mock-adapter');
    const mock = new MockAdapter(axios);
    
    mock.onGet('http://somehost/path').reply(200, 'response goes here');
    

    【讨论】:

    • 使用此代码,Kitsu 仍在发出 API 请求。 Kitsu 没有被嘲笑。
    • 确保您正确地模拟了整个 URI?在我自己的一些项目的测试中,我就是这样做的。我遇到的主要问题是在设置模拟时我没有正确的 URI。
    • 是的,正如我所说,Kitsu 有一个 get 方法。正在调用此 get 方法,而不是从 axios 获取方法。
    • Kitsu 本身使用 axios-mock-adapter 进行测试。 github.com/wopian/kitsu/blob/master/packages/kitsu/src/… 没有更多细节我帮不了你。发布一些示例代码?
    猜你喜欢
    • 1970-01-01
    • 2020-03-15
    • 2021-11-04
    • 2021-05-27
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多