При использовании огурца для модульного тестирования довольно много накладных расходов.Вы должны не только написать функции, но и отобразить их в реализации, используя отдельный бит кода.
Подразделение модульного тестирования должно быть написано очень быстро и очень быстро.Естественно, огурец фокусируется на опыте конечного пользователя, в основном из-за языка, используемого при написании функции.
Просто для обновления, функция будет содержать следующее:
Каккакой-то участник системы
Я хотел бы выполнить упражнение
Чтобы я мог извлечь из этого выгоду
Given a precondition
When I perform an action
Then something should happen
Первый абзац, который частоигнорируется, очень важно, так как задает контекст для операции и объясняет , почему что-то происходит.Из-за использования естественного языка эти вещи легко показать непрограммистам, чтобы получить некоторую обратную связь.
Теперь, использование их для модульных тестов в лучшем случае показалось бы неудобным.Прежде всего, ориентация на конечного пользователя предполагает более интеграционный подход, поскольку эта функция ничего не говорит о ложных показаниях и разделении пользовательского интерфейса и логики.Т.е. функция, подобная следующей, просто кажется странной:
Given a that a database mock is configured with the following data
| ID | Username |
| 0 | igor |
When call FindAll on User Repository
Then I get the following user back
| ID | Username |
| 0 | igor |
Кроме того, поскольку размер SUT становится меньше (т. Е. Класс), контекст операции не так важен.Пользовательский репозиторий не заботится о контексте, например, его не волнует, является ли его потребитель обычным пользователем или VIP-пользователем.Простой компонент (который должен быть после SRP) является полностью детерминированным на основе его входных данных.
Итак, модульный тест предназначен для проверки правильности написанного вами, а тест cucmber - для проверки.подтвердите, что то, что вы написали, удовлетворяет какой-то более высокой цели, поместив поведение системы в контекст.