Проверяет знание инструментов для тестирования HTTP-эндпоинтов и умение писать интеграционные тесты для API.
HTTP-тесты проверяют, что сервер корректно обрабатывает запросы: возвращает нужные статусы, заголовки и тело. В отличие от юнит-тестов, здесь поднимается реальное приложение (или его часть) и к нему отправляются настоящие HTTP-запросы. Это ловит ошибки маршрутизации, валидации, middleware и сериализации, которые юнит-тесты пропускают.
const request = require('supertest');
const app = require('../app'); // Express-приложение
describe('GET /users/:id', () => {
it('возвращает пользователя', async () => {
const res = await request(app)
.get('/users/1')
.set('Accept', 'application/json');
expect(res.status).toBe(200);
expect(res.body).toEqual({ id: 1, name: 'Alice' });
});
it('404 для несуществующего', async () => {
const res = await request(app).get('/users/999');
expect(res.status).toBe(404);
});
});Для внешних зависимостей (платёжки, сторонние API) используют nock или DI-моки, чтобы тесты были быстрыми и детерминированными. В CI такие тесты запускаются после юнит-тестов и перед e2e.
Итог: supertest в связке с Jest — стандарт для HTTP-тестов Node.js API; применяйте его для проверки маршрутов, валидации и кодов ответа, а nock и Pact — когда нужно изолировать внешние сервисы.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
Node.js
Testing
Ключевые слова
Подпишись на Node.js Developer в телеграм