Палец вверх 0
Перевод
Перевод

Могу ли я сделать огурцы по рельсам короче?

Я начинаю с огурца, и я написал следующее определение шага, которое в основном я скопировал из теста rspec, который у меня уже был.

Given /^There is a picture on the screen$/ do
  describe PagesController do
    describe "GET 'home'" do
      it "should be successful" do
        get 'home'
        response.should be_success
      end
    end
  end
end

Теперь я тоже совсем новичок в Rails. Но это кажется мне немного длинным, я не могу сделать его немного короче?

ruby-on-rails rspec cucumber
задан Jasper Kennis 15 мая 2011 г., 20:26:15
источник

3 ответа

Решение 1
Перевод
Перевод

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

Given I am on the home page
Then I should see a picture

Первый шаг, который вы получаете бесплатно при установке веб-шагов features/support/paths.rb , при условии, что вы используете помощника пути по умолчанию в features/support/paths.rb . Второй будет выглядеть так:

Then "I should see a picture" do 
  page.should have_selector("img.picture")
end

На этом шаге мы будем искать изображение с классом 'picture' - моим произвольным определением того, что представляет собой картинка в контексте вашего приложения.

Обратите внимание, что я не проверяю статус ответа здесь. Идея огурца (даже более того, чем Rspec) заключается в том, что вы тестируете вещи с точки зрения клиента. Возможно, ваш клиент может быть клиентским API, поэтому, возможно, уместна проверка кода состояния, но в целом с веб-приложением вы гораздо больше беспокоитесь о пользовательском интерфейсе, и сбойный код состояния проявляется другими способами, такими как сломанный интерфейс. Такие детали, как коды состояния, как правило, являются деталями реализации, которые не следует тестировать с точки зрения BDD (хотя они должны быть рассмотрены в ваших модульных тестах).

FWIW, я также не согласен с утверждением, что длина теста - это то, что должно определять, следует ли вам использовать Rspec или Cucumber. Посмотрите мой пост в блоге по этому вопросу: http://collectiveidea.com/blog/archives/2011/04/15/language-matters/

ответ дан karmajunkie 15 мая 2011 г., 21:51:11
источник
Палец вверх 1
Перевод
Перевод

Настоятельно рекомендую не использовать Cucumber, пока вы не познакомитесь с Rails / Ruby. Огурец добавляет уровень абстракции, который может сделать вещи очень запутанными, разочаровывающими и отнимающими много времени. Просто получите очень хорошо с RSpec в первую очередь. Затем, когда вы захотите провести интеграционные тесты в своем приложении Rails, используйте Capybara с RSpec. Если вам удобно использовать эти драгоценные камни, вы можете пойти в Огурец.

Огурец о написании пользовательских историй. Затем вы переводите эти шаги огурца в строки RSpec и Capybara.

ответ дан monocle 16 мая 2011 г., 5:48:12
источник
Палец вверх 0
Перевод
Перевод

Если вы ищете краткость, я бы порекомендовал придерживаться RSpec. Основным преимуществом Cucumber является его читаемость для людей, которые не пишут код, в то время как RSpec жертвует этим, чтобы быть короче. Я попытался использовать Lettuce , аналог Python для Cucumber, в одном из моих проектов и обнаружил, что слишком много работы, чтобы не отставать.

Итак, вкратце: если вы хотите написать более короткие тесты, используйте RSpec. Если вы хотите, чтобы ваш разработчик редактировал ваши тесты или вы работаете в команде, используйте Cucumber.

ответ дан rhdoenges 15 мая 2011 г., 20:38:26
источник