我在某些组件中调用了这个api代码。
const Api: IApi = {
delete: (url: string): Promise<any> => {
return axios.delete(url);
},
get: (url: string): Promise<any> => {
return axios.get(url)
},
post: (url: string, payload: IContact): Promise<any> => {
return axios.post(url, JSON.stringify(payload))
},
put: (url: string, payload: IContact): Promise<any> => {
return axios.put(url, JSON.stringify(payload))
},
}
export { Api }
除 API 外,所有使用此 API 的组件均已测试为 100% 覆盖率。
未覆盖的文件为接口(类型)文件。
我现在面临的问题是尝试测试 API,使其达到 100% 的覆盖率,但所有场景都失败了。尽管所有其他方法都已成功模拟,但仅覆盖了 get 方法。
到底发生了什么事情才会让报道变成这样?
如何实现这种覆盖?
您应该模拟
axios
库,在测试中调用 delete
、post
和 put
方法,并确保正确调用模拟。
类似这样的:
import axios from 'axios';
import { Api } from './users';
jest.mock('axios');
describe('Api', function() {
it('should call delete correctly', () => {
const url = 'https://stackoverflow.com/';
Api.delete(url);
expect(axios.delete).toHaveBeenCalledWith(url);
});
});