describe
, context
, feature
, scenario
: В чем разница (s) между четырьмя и когда я могу использовать каждый из них?
источник
describe
, context
, feature
, scenario
: В чем разница (s) между четырьмя и когда я могу использовать каждый из них?
Это context
псевдоним для describe
, поэтому они функционально эквивалентны. Вы можете использовать их как взаимозаменяемые, разница только в том, как читается ваш файл спецификации. Например, нет разницы в результатах теста. В книге RSpec говорится:
«Мы склонны использовать
describe()
для вещей иcontext()
для контекста».
Лично мне нравится использовать describe
, но я понимаю, почему люди предпочитают context
.
feature
и scenario
являются частью Capybara, а не RSpec, и предназначены для использования для приемочных испытаний. feature
эквивалентен describe
/ context
и scenario
эквивалентен it
/ example
.
Если вы пишете приемочные тесты с помощью Capybara, используйте синтаксис feature
/ scenario
, если не используйте синтаксис describe
/ it
.
Этим утром, когда я писал некоторые спецификации, у меня возник тот же вопрос. Обычно я в основном использую
describe
и не особо задумываюсь об этом, но сегодня утром я имел дело с множеством случаев и разными спецификациями для одного модуля, поэтому это должно было быть легко понятным для следующего разработчика, который прочитает эти спецификации. Я спросил об этом у Google и нашел вот что: описание и контекст в rspec , ответ на который я нахожу весьма интересным:Итак, полагаясь на этот принцип, вы бы написали такую спецификацию:
Не уверен, что это общепринятое правило, но я нахожу такой подход ясным и довольно легким для понимания.
источник
Расширяя отличный ответ Пьера , согласно документам :
Итак, для тех, кто знаком с терминами Mocha description и it (которые лучше подходят для описания поведения теста с точки зрения пользователя, следовательно, Mocha в основном функционирует как среда внешнего тестирования), вы можете:
describe
иit
или другую паруit
внутриcontext
блока, который требует выполнения нескольких утверждений / тестов в определенном состоянии приложенияВыбирая второй вариант, вы по-прежнему можете следовать намерению «... обернуть [ping] набор тестов против одной функции в одном и том же состоянии».
Таким образом, ваши тесты могут выглядеть так:
Таким образом, вы полностью пропускаете
feature
ключевое слово, которое вы можете использовать для определенных функций внешнего интерфейса или если вы выполняете FDD (разработка, управляемая функциями), что для некоторых может показаться неудобным. Попросите вашу команду разработчиков поделиться здесь.Предостережение: не всегда соблюдайте отраслевые стандарты, представьте, если бы мы смоделировали все наши тесты по философии Volkswagen?
источник