Причина, по которой вы часто видите приемочные / интеграционные тесты, используемые в цикле BDD, заключается в том, что многие из его практиков уделяют большое внимание насмешкам и внешнему развитию. Как таковые, они, как правило, должны включать в себя как сквозные интеграционные / приемочные тесты, так и модульные тесты, чтобы обеспечить общее поведение системы.
Когда поддельные объекты используются в качестве коллабораторов вместо реальных объектов в модульном тесте, довольно легко проверить, что изолированное тестируемое устройство ведет себя должным образом (то есть, что оно правильно изменяет свое состояние и отправляет правильные сообщения). Однако он не может проверить ничего больше, чем то, что в отдельности отдельный объект ведет себя как ожидалось. Таким образом, необходимо провести сквозное приемочное испытание, чтобы убедиться, что все объекты в системе при совместном использовании обеспечивают обещанное значение для конечного пользователя.
Таким образом, в основном в рамках этого подхода юнит-тесты и приемочные тесты играют следующие роли:
Юнит-тесты - Объекты в изоляции ведут себя надлежащим образом
Приемочные / интеграционные тесты - Все объекты вместе обеспечивают обещанное значение системы.
Хотя я сам являюсь большим сторонником этого стиля разработки, он несколько независим от общих идей BDD. По моему мнению, приемочные / интеграционные тесты необходимы только тогда, когда вы изолируете тестируемую систему в своих модульных тестах, используя макеты и заглушки.