[英]Unable to mock axios call in Jest
It seems mocking is not working for me via axios as it seems to make acrtual API calls ( visible because I am getting 401 status code when running jest test ) I am not sure why am I not able to mock axios.Can anyone point out the我犯的错误?
索引.test.ts
describe("compositeScore()", () => {
it("Mock Fetch API for Composite Score Response", async () => {
const mock = jest.spyOn(axios, "post");
mock.mockReturnValueOnce(mockResponse);
const response = await dateFilter(platform);
expect(mock).toHaveBeenCalledTimes(1);
expect(response).toEqual(mockFetchCompositeScoreResponse);
});
});
索引.ts
export const dateFilters = async (platform) => {
const dates = await fetchWrapper(
platform.toLowerCase().concat("DateFilters"),
platform,
{}
);
return dates;
};
export async function fetchWrapper(
queryName: string,
platform: string,
queryParams?: {}
) {
const headers = {
Accept: "application/json",
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
};
const config: AxiosRequestConfig = {
method: "post",
url,
headers,
data: {
db: dbName,
csl: queryParams
? substituteQueryParameters(queries[queryName], queryParams)
: queries[queryName],
},
};
return axios(config);
}
尝试
import axios from 'axios';
jest.mock('axios');
在import
被测系统之前,您需要先模拟模块。
您使用的是axios
function,而不是axios.post()
方法。 所以你应该模拟axios
function 而不是axios.post()
。 jest.mock()
是选择。
例如
index.ts
:
import axios, { AxiosRequestConfig } from 'axios';
export const dateFilters = async (platform) => {
const dates = await fetchWrapper(platform.toLowerCase().concat('DateFilters'), platform, {});
return dates;
};
export async function fetchWrapper(queryName: string, platform: string, queryParams?: {}) {
const token = '123';
const url = 'http://localhost:3000/api';
const dbName = 'test';
const headers = {
Accept: 'application/json',
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
};
const config: AxiosRequestConfig = {
method: 'post',
url,
headers,
data: {
db: dbName,
},
};
return axios(config);
}
index.test.ts
:
import axios, { AxiosResponse } from 'axios';
import { dateFilters } from '.';
jest.mock('axios');
const mAxios = axios as jest.MockedFunction<typeof axios>;
describe('71351319', () => {
it('Mock Fetch API for Composite Score Response', async () => {
const mockResponse = { data: {}, status: 200, statusText: 'ok' } as AxiosResponse;
mAxios.mockResolvedValue(mockResponse);
const response = await dateFilters('DateFilters');
expect(mAxios).toHaveBeenCalledTimes(1);
expect(response).toEqual({ data: {}, status: 200, statusText: 'ok' });
});
});
package 版本:
"axios": "^0.21.1",
"jest": "^26.6.3",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.