我刚刚找到了一种使用笑话来模拟axios的有用方法,但是,如果我多次调用具有不同url的axios,如何根据该url指定url和要返回的值? 不使用第三方库,有什么办法吗?
谢谢
// users.test.js
import axios from 'axios';
import Users from './users';
jest.mock('axios');
test('should fetch users', () => {
const users = [{name: 'Bob'}];
const resp = {data: users};
axios.get.mockResolvedValue(resp);
// or you could use the following depending on your use case:
// axios.get.mockImplementation(() => Promise.resolve(resp))
return Users.all().then(data => expect(data).toEqual(users));
});
答案 0 :(得分:3)
您可以在.mockImplementation()
回调中处理多个条件:
schemes = {
'bundle': bundlerepo,
'union': unionrepo,
'file': _local,
'http': httppeer,
'https': httppeer,
'ssh': sshpeer,
'static-http': statichttprepo,
}
答案 1 :(得分:0)
它对我有用。下面显示了您在何处以及如何呈现应用。
it("should work.", async () => {
let component;
await act(() => {
return axios.get("https://api.address.here.com/").then(async (res) => {
component = renderer.create(<App />);
});
});
expect(component.toJSON()).toMatchSnapshot();
});