Имитация вызовов внешних API в тестах Jest позволяет вам тестировать код, который зависит от данных из внешних источников, без необходимости делать реальные запросы. Это делает ваши тесты детерминированными и независимыми от внешних зависимостей. Вот пошаговое руководство, как это сделать:
1. Определите внешние вызовы API:
Определите, какие вызовы API выполняет ваш код, который нужно имитировать.
2. Создайте имитацию внешнего API:
Используйте jest.fn()
для создания имитации функции, которая будет возвращать поддельные данные.
// Пример имитации внешнего API
const mockGetData = jest.fn(() => {
return {
data: {
id: 1,
name: 'John Doe',
email: 'johndoe@example.com',
},
};
});
3. Используйте jest.mock()
для замены оригинальной реализации:
Используйте jest.mock()
для замены оригинальной реализации внешнего API на имитацию.
// Пример имитации внешнего API
jest.mock('./api', () => ({
getData: mockGetData,
}));
В этом примере функция getData
из модуля ./api
заменяется фиктивной функцией mockGetData
.
4. Напишите тестовый код:
Напишите тестовый код, который должен вызывать код, выполняющий внешний вызов API. Затем вы можете проверить, что код работает правильно, на основе фиктивных данных, возвращаемых имитацией.
// Пример тестового случая для кода, который выполняет внешний вызов API
test('should return the correct user data', async () => {
const result = await getUserData();
expect(result).toEqual({
id: 1,
name: 'John Doe',
email: 'johndoe@example.com',
});
});
В этом примере тестируется функция getUserData()
, которая выполняет внешний вызов API для функции getData()
. Тест проверяет, что функция корректно возвращает ожидаемые данные на основе поддельных данных, возвращаемых фиктивной реализацией.