Модульное тестирование против интеграционного тестирования приложения Express.js

Я пишу тесты для приложения Express.js и не знаю, как выбрать между модульными тестами и интеграционными тестами.

в настоящее время я экспериментировал с:

модульные тесты - использование Sinon для заглушек/моков/шпионов и Injects для внедрения зависимостей в модули. при таком подходе мне приходится заглушать MongoDB и другие внешние методы.

Я подумал о модульном тестировании отдельных маршрутов, а затем с помощью интеграционного теста, чтобы убедиться, что на самом деле вызываются правильные маршруты.

интеграционные тесты - с использованием Supertest и Superagent, гораздо меньше кода для написания (не нужно ничего имитировать/заглушать), но должна существовать тестовая среда (базы данных и т. д.)

Я использую Mocha для запуска обоих стилей тестов.

как мне выбрать между этими двумя разными подходами?


person Gal Ben-Haim    schedule 22.01.2013    source источник


Ответы (1)


Вероятно, вам следует сделать и то, и другое. Модульное тестирование каждого не вспомогательного метода, выполняющего нетривиальную работу. Проведите все это через несколько интеграционных тестов. Если вам приходится делать тонны, тонны и тонны макетов и заглушек, это, вероятно, знак для рефакторинга.

person David Adrian    schedule 22.01.2013
comment
что вы предлагаете для маршрутов, которые делают стандартную базу данных CRUD? - person Gal Ben-Haim; 23.01.2013
comment
Фактор CRUD в некоторый объект/класс/функцию и модульное тестирование этого. Затем интегрируйте тестовые маршруты. - person David Adrian; 23.01.2013