Тестирование 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
, рассмотренной в прошлой теме.
Запустим тесты и проверим результат: