如何模拟 Axios 用笑话获得响应

ray*_*ray 6 node.js jestjs axios

我如何模拟 axios 获得响应?此测试失败并出现以下错误:

Error: expect(jest.fn()).toHaveReturnedWith(expected)

Expected: {"test": "test"}
Received: {}

Number of returns: 1
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的测试:

jest.mock('axios');
const axios = require('axios');

describe('GET /searchLocation', () => {
    it('should return mock object', () => {
        const mockResp = { test: 'test' };
        axios.get.mockResolvedValue(mockResp);
        axios.get('/');
        expect(axios.get).toHaveBeenCalledWith('/'); //passes
        expect(axios.get).toHaveReturnedWith(mockResp); //fails
    });
});
Run Code Online (Sandbox Code Playgroud)

And*_*ogr 3

我认为替换这个:

  axios.get.mockResolvedValue(mockResp);
Run Code Online (Sandbox Code Playgroud)

有了这个:

  axios.get = jest.fn(() => mockResp);
Run Code Online (Sandbox Code Playgroud)

应该可以帮助你。

PS:此调用expect(axios.get)不会等待承诺解决。