首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用jest.fn()相关的检查和axios模拟适配器吗?

我可以使用jest.fn()相关的检查和axios模拟适配器吗?
EN

Stack Overflow用户
提问于 2019-06-07 17:54:02
回答 1查看 326关注 0票数 2

我正在使用axios-mock-adapter,我想知道是否可以设置它,以便也可以像expect(MockAdapter.get).toHaveBeenCalledWith(url);这样的断言

我试过以下几种方法:

代码语言:javascript
复制
// test
import MockAdapter from "axios-mock-adapter";
import { fetchProducts } from "../src/redux/actions/productActions";

describe("fetchProducts", () => {
  const mock = new MockAdapter();
  it("fetches the products", async () => {
    const x = await fetchProducts();
    expect(mock.get).toHaveBeenCalledWith("https://www.whatever.com");
  });
});

// function
import axios from "axios";

export async function* fetchProducts() {
  let data = await axios.get("https://www.whatever.com");
  return data;
}

上面写着

代码语言:javascript
复制
    expect(jest.fn())[.not].toHaveBeenCalledWith()

    Matcher error: received value must be a mock or spy function

    Received has value: undefined

如果我添加了一个./__mocks__/axios.js文件,我就会立即得到

代码语言:javascript
复制
    TypeError: axios.create is not a function

    > 1 | import MockAdapter from "axios-mock-adapter";
        | ^
      2 | import { fetchProducts } from "../src/redux/actions/productActions";

是否有办法做到这一点,或者是模仿我自己的axios函数实现,还是使用axios-mock-adapter而不访问它作为一个jest模拟函数?

EN

回答 1

Stack Overflow用户

发布于 2022-05-16 11:58:18

你需要创建一个这样的间谍:

代码语言:javascript
复制
const spy = jest.spyOn(mock, 'onGet');

mock.onGet('https://www.whatever.com').reply(200);

// only if mock client has been called with https://www.whatever.com the test will pass
expect(spy).toHaveBeenCalled();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56499156

复制
相关文章

相似问题

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