огурец против RSpec - PullRequest
       4

огурец против RSpec

25 голосов
/ 29 ноября 2011

Я хочу начать погружаться в BDD.Я никогда раньше не использовал TDD и не уверен, стоит ли мне начинать с изучения RSpec, а затем перейти к огурцу или просто перейти к использованию огурца.

Я читал в Интернете об обоих, и мне кажется,что огурец может быть «заменой» для RSpec.Прав ли я или один должен использоваться для определенных вещей, а другой - для других?

Ответы [ 3 ]

71 голосов
/ 29 ноября 2011

Огурец и RSpec оба используются для BDD, но имеют различное использование.

Представьте, что Cucumber описывает, что происходит с точки зрения пользователя через взаимодействие с веб-браузером. Таким образом, вы можете иметь такие шаги, как:

Given I'm not logged in
When I login
Then I should be on the user dashboard page

Довольно широкий, но там много чего происходит. Cucumber хорош для того, чтобы обеспечить охват всех этих высокоуровневых функций и функций (например, когда пользователь входит в систему, он попадает на нужную страницу). Но это не очень хороший инструмент для тестирования низкоуровневого кода. Вот где приходит RSpec.

Возьмите пример входа в систему выше. Ваш пользователь может войти в систему с адресом электронной почты или именем пользователя. Вы, вероятно, хотите убедиться, что адрес электронной почты действителен, или что имя пользователя имеет определенную длину ... или что то, что они используют для входа в систему, уникально. Вы сделали бы это в своей модели User с проверкой.

Это тривиальный пример, но вы можете протестировать его с помощью RSpec (в вашем файле spec / models / user_spec.rb). Это не что-то, что вы бы протестировали с помощью Cucumber.

Таким образом, нижняя строка:

Огурец для высокоуровневых тестов, описывающих широкие функциональные возможности с точки зрения пользователя

RSpec для низкоуровневых тестов, описывающих детали того, как ваши классы, методы, модели, контроллеры и т. Д. Действительно должны работать.

Этот пост действительно хорошо объясняет, когда переходить с одного инструмента на другой:

http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/

Я также рекомендую " Книга RSpec " и " Предписания по тестированию Rails " для хороших ресурсов как для инструментов, так и для тестирования в целом.

P.S. - Не путать вещи, но вы также можете использовать RSpec для высокоуровневых вещей. Но некоторые из этих решений зависят от того, какой инструмент вы предпочитаете, или, возможно, работаете ли вы с нетехническим клиентом, который получит больше пользы от удобного в использовании синтаксиса Cucumber для описания сценариев.

8 голосов
/ 29 ноября 2011

Да, cucumber и rspec используются для BDD.

Лично я предпочитаю Cucumber, но некоторые люди считают, что он выводит результаты, и предпочитают, чтобы их тесты были менее английскими, а больше кода.И то, и другое - отличный инструмент.

3 голосов
/ 24 марта 2015

Кентон отлично справился с этим ответом.Вот как авторы RSpec и Cucumber видят это:

Мы используем Cucumber для описания поведения приложений и используем RSpec для описания поведения объектов.

Хотя мы используем Cucumber, чтобы сосредоточиться на поведении высокого уровня, и используем RSpec, чтобы сосредоточиться на более детализированном поведении, каждый из них может использоваться для любой цели.

...