Обсуждали похожие вещи на работе.Я считаю, что модульный тест состоит в том, что он тестирует небольшой модуль, в котором его зависимости являются макетами или заглушками, так что вы можете подключить некоторые данные, чтобы подтвердить свои ожидания.
Конечно, это приводит к тому, когдаЯ на самом деле реализую свои интерфейсы и, что более важно, откуда я знаю, что эта чертова штука работает.Вот тут-то и вступают интеграционные тесты или тесты BDD. Когда я пишу конкретную функцию или историю, я пытаюсь описать тест BDD, проходящий через систему, эти тесты должны использовать все реальные реализации вплоть до любых внешних границ.Я стараюсь использовать тот же провод IoC, что и в реальном приложении.После того, как этот тест будет выделен и станет красным, вы можете приступить к тестированию модулей и подключить их вместе.Когда вы закончите, ваш тест BDD должен пройти.
Приятная вещь в тестах BDD состоит в том, что вы можете изменять определенные части внутренних компонентов, но до тех пор, пока вы не измените свои требования, тест остается в основномбез изменений.
Я играл с StoryQ для тестов BDD и считаю его простым в использовании.