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

Шпинат против огурца для BDD в рельсах

Я начинаю с BDD. Интересно, что лучше начать с огурца или шпината. У меня сложилось впечатление, что Шпинат новый с блока. Посмотрите здесь

С чего начать. Критерии будут:

  • Поддержка по всем направлениям.
  • Гибкость использования
  • Интеграция сторонних инструментов и API.

Опять может быть неосведомленный вопрос о новичке: где капибара вписывается в картину.

4b9b3361

Ответ 1

В каком-то контексте я был долгое время пользователем Огурца, но всегда жалел, что это был Шпинат с первого дня. Я переключу все свои проекты на Шпинат, несмотря на его недостатки, потому что он использует новую технологию "PORO" ( "Обычные старые рубиновые объекты" ). Теперь я могу расширить свои шаги, но хочу, потому что это просто Ruby.

Чтобы ответить на ваш вопрос, начиная с этого письма:

  • Поддержка по всем направлениям.

Огурцы

Spinach по-прежнему разрабатывает некоторые функции, в том числе блоки "Background", и в настоящее время я пытаюсь получить его для распознавания таблиц.

  • Гибкость использования

шпината

Огурец поощряет плохой дизайн шага с самого начала, ИМО. Если вы создадите специальные действия, вы позже поработаете над ними, и если вы создадите многоразовые глобальные шаги, определения вашей функции будут длинными, универсальными и скучными для чтения. Я слышал, как люди утверждают, что они могут успешно пройти баланс и быть достаточно конкретными, но все еще могут многократно использоваться; Я считаю себя достаточно хорошо осведомленным, что если я не могу сделать это надежно, это слишком сложно.

  • Интеграция сторонних инструментов и API-интерфейсов

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

Если это действительно "сторонние инструменты и интеграция API", за которыми вы следуете, Spinach поддерживает capybara и rspec, что больше всего для вас. Огурец имеет 3-х сторонние многоразовые библиотеки шагов, но, как отмечалось в моем предыдущем пункте, я думаю, что это плохо. Что касается третьей стороны и интеграции, даже если она еще не существует, вы действительно не сможете получить ничего лучше, чем обычные старые объекты ruby.

Где капибара вписывается в изображение

Capybara - это ваш тестовый интерфейс для вашего сайта, а также тестовая мышь и клавиатура. Вы можете запустить его на консоли и управлять своим приложением, но это будет повторяться. Огурцы/Шпинат (или rspec/test-unit/minitest) могут использовать capybara для автоматизации тестирования вашего приложения. Люди предпочитают Cucumber/Spinach, потому что они помогают вам выйти из кода немного, чтобы думать как пользователь.


В целом, вам, вероятно, будет лучше всего получить книгу rspec/cucumber и делать то, что она говорит. Просто имейте в виду, что для тестирования требуется некоторое время, поэтому не останавливайтесь на достигнутом. Может быть, проверить Шпинат где-нибудь в этом процессе; если вам нравится Cucumber, вы можете найти, что вам действительно понравится Шпинат.

Ответ 2

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я - шпинат mantainer.

Если вы начинаете с BDD, я бы настоятельно рекомендовал две книги:

Я думаю, что важно изучить все BDD и TDD-процессы (вне игры и т.д.), а затем выбрать инструмент, которым вы чувствуете себя более комфортно.

Сказав это, у Огурца есть огромное сообщество, но многие вещи также применимы к Шпинаху, поскольку у них есть общий характер - Герхин.

Что касается гибкости использования, я бы сказал, что обе они очень гибкие, но я (очевидно) предпочитаю Spinach, поскольку каждая функция - это просто класс Ruby, где вы можете включать модули, наследовать от других классов и т.д. (это также относится к API).

Я хочу, вы можете взглянуть на spinach-rails-demo и посмотреть, как все работает.

Ответ 3

Если вы застряли в Cucumber и вам не нужны глобальные шаги, вы можете обойти проблему, пометив шаги с помощью своего рода идентификатора сценария:

# features/1_greetings.feature
Scenario: Formal greeting
  Given I have an empty array [#1]
  And I append my first name and my last name to it [#1]
  When I pass it to my super-duper method [#1]
  Then the output should contain a formal greeting [#1]

Идентификатор сценария № 1 может быть любым значением. Мне нравится использовать номера билетов для дальнейшего использования.

Затем вы можете поместить все шаги в один файл определения в один шаг. Это достаточно близко к виду Spinach:: FeatureSteps. Нет аргументов регулярных выражений!

# features/step_definitions/1_greetings.rb
Given 'I have an empty array [#1]' do
  #...
end

And 'I append my first name and my last name to it [#1]' do
  #...
end

When 'I pass it to my super-duper method [#1]' do
  #...
end

Then 'the output should contain a formal greeting [#1]' do
  #...
end

Я опубликовал больше об обходном пути github.

Ответ 4

Я не могу говорить за Шпинат, поскольку я никогда не использовал его, но у Огурца определенно есть огромная поддержка сообщества с множеством внешних библиотек.

Capybara позволяет вам легко тестировать веб-приложения.

When I fill in "username" with "foo"
And I click on "login"
Then I should see "enter your password"