Тестирование Express¶
Для тестирования функциональности, которая использует Express, мы можем воспользоваться специальным инструментом - supertest.
Вначале установим supertest с помощью команды:
1 | |
Первым делом определим простенький файл приложения app.js:
1 2 3 4 5 6 7 8 9 10 | |
Данное приложение при обращении по главному маршруту / отправляет в ответ некоторую строку Hello Test.
И чтобы задействовать данное приложение в тесте, оно оформляется в виде модуля: module.exports.app = app;
Далее для тестов создадим в каталоге проекта новый файл app.test.js:
1 2 3 4 5 6 7 | |
Для тестирования получаем модули supertest и нашего приложения и используем метод it() для получения результата.
Для настройки и выполнения теста в request передается функционал приложения:
1 | |
устанавливаем маршрут, по которому будем обращаться в приложении:
1 | |
Устанавливаем ожидаемый результат через метод expect:
1 | |
и с помощью метода end() выполняем тест:
1 | |
Для запуска этого теста у нас опять же должна быть настроена должным образом команда test в файле package.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Запустим тест на выполнение:
Зеленый маркер в сообщении теста указывает, что тест пройден успешно, а приложение действительно возвращает строку Hello Test.
Рассмотрим еще пару тестов. Для этого изменим файл app.js следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Здесь определена обработка для трех маршрутов. Для их тестирования изменим файл app.test.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
Если нам надо проверить статусный код, то также можем передать ожидаемый код статуса в метод expect(404)
Если необходимо проверить какие-то комплексные объекты, которые отправляются в ответе клиенту, то в метод expect передается функция, в которую в качестве параметра передается объект ответа response. А через объект response.body можно получить весь ответ и сравнить его с ожидаемым значением. Для сравнения комплексных объектов можно применить метод deepEqual() или deepStrictEqual() библиотеки assert, рассмотренной в прошлой теме.
Запустим тесты и проверим результат:

