Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Да, огурцы и rspec используются для BDD.

Я лично предпочитаю Огурцы, но некоторые люди считают, что это нечестно, и предпочитать их тесты были менее английскими, больше кода. Оба являются отличными инструментами.

Ответ 2

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

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

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

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

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

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

Итак, нижняя строка:

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

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

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

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

Я также рекомендую " RSpec Book" и " Режимы тестирования Rails "для хороших ресурсов как для инструментов, так и для тестирования в целом.

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

Ответ 3

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

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

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