Контекст: Я пытаюсь попрактиковаться в BDD в среде Ruby on Rails, используя Capybara / Steak для интеграционных тестов, так что это будет пример, который я использую, но этот вопрос является общим вопросом о BDD лучше всего. практика.
Скажем, у меня есть (по общему признанию) широкая пользовательская история, например, так:
Feature:
As an administrator
I should be able to manage my products
Я изучал гем ActiveAdmin
для Rails 3, который позволяет создавать сложные интерфейсы администратора с использованием простого DSL. Хотя потенциал экономии времени огромен, он также пугает меня, чтобы выгрузить так много функций в сторонний код без всякого тестирования.
Однако меня учили, что вам, как правило, нужно тестировать только тот код, который вы пишете сами. Итак, по этой логике мне просто нужно проверить, что ActiveAdmin
правильно интегрирован, так как это единственный код, который я на самом деле пишу. Базовый сценарий для проверки этого может быть:
Scenario:
Given I have 20 products
When I visit the product index page
Then I should see 20 products.
Это функция, предлагаемая ActiveAdmin
из коробки. Таким образом, я могу выполнить базовую установку и создать страницу администрирования продуктов, используя документацию ActiveAdmin
, и сценарий пройдет.
Конечно, тогда я также включил огромное количество других сценариев, таких как:
Given I have 20 products
And my products include Apples, Bananas, and Berries
When I sort my products by name
Then Apples, Bananas and Berries should be on the first page in that order.
Given I have 20 products
And my products include Apples, Bananas, and Berries
When I type 'ap' into the Filter by Name field
Then I should see "Apples"
And I should not see "Bananas"
и т.д.. и т.д.
Предположительно, хотя они уже были проверены ActiveAdmin
, и поэтому мне не нужно проверять их снова, даже если они имеют решающее значение для моего приложения. Так что я думаю, что я закончил и могу перейти к другой функции (?).
TL; DR : Мой основной вопрос: Должен ли я писать сценарии для критически важных функций, таких как сортировка и фильтрация, даже если они уже предоставлены внешней библиотекой, и я протестировал приложение интеграция с этой библиотекой?