我正在尝试模拟axios.create()
函数,该函数返回axios的实例,但是方法较少。我想通过使用每种方法返回一个对象来模拟此create()
方法,但是我也希望使用jest.fn()
来模拟这些方法,所以我尝试了类似的方法
axiosInst = {
get: jest.fn(),
post: jest.fn(),
...
}
axios.create = jest.fn(() => axiosInst)
但是当我运行测试代码时它不起作用,我得到了
TypeError: Cannot read property post of undefined
在我的代码中调用axiosInst.post()
是出于某种原因,模拟的axios.create()
返回undefined
,这绝对没有意义。
对于将mockReturnValue
设置在axiosInst
上的精确程度,我也感到困惑。在我运行测试之前,在实例上为方法设置返回值的确切语法是什么?
答案 0 :(得分:0)
尝试以下方法来模拟任何模拟函数的返回值:
axios.create = jest.fn().mockReturnValue({
get: jest.fn(),
set: jest.fn()
});
此外,您可以在此处设置已解决的Promise作为get
的返回值,因为我们可能需要在测试用例中测试成功/失败方案,如下所示:
const mockPromise = new Promise(resolve => resolve(
{ /** some mock data here */ })
);
axios.create = jest.fn().mockReturnValue({
get: mockPromise,
set: jest.fn()
});
);