Огурец и 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 для описания сценариев.