В большинстве случаев ваш код получает какое-то значение из API, анализирует его и делает с ним что-то еще.
В результате вы не хотите делать реальный вызов API и вместо этого имитировать его.
Естьпара способов сделать это.Один из возможных способов - это смоделировать единственный метод в библиотеке superagent
.
// tell jest not to mock superagent because we'll mock the only method
jest.unmock('superagent');
const request = require('superagent');
const getDog = () => {
return request.get('https://dog.ceo/api/breeds/image/random');
};
it('resolves', () => {
// mock the get request to resolve object
request.get = jest.fn().mockResolvedValue({
message: 'Your message'
});
// Expect mocked response
expect.assertions(1);
return expect(getDog()).resolves.toEqual({
message: 'Your message'
});
});
it('rejects', () => {
// mock the get request to reject object
request.get = jest.fn().mockRejectedValue({
message: 'Your error'
});
// Expect mocked response
expect.assertions(1);
return expect(getDog()).rejects.toEqual({
message: 'Your error'
});
});
Я использовал expect.assertions(1)
, есть причина :
Это часто полезно при тестировании асинхронного кода, чтобы убедиться, что утверждения в обратном вызове действительно были вызваны.
Существуют ссылки, которые могут вам помочь: mockFn.mockResolvedValue (значение) , .rejects