Особенность огурца в форме с капчей - PullRequest
2 голосов
/ 20 декабря 2010

Если в вашей форме есть капча (я использую гуманизатор). Как вы заполняете форму, отправляете и получаете ожидаемый результат при написании огуречной функции.

Scenario: Sign Up with Valid Data
  Given I am not authenticated
  And I am on the sign in page
  When I follow "Sign up"
  And I fill in the following:
    | Name                   | Administrator            |    
    | Email                  | admin@admin.com          |
    | Password               | 123456                   |
    | Password confirmation  | 123456                   |
  And I fill in the captcha correctly
  And I press "Sign Up"
  Then I should be on the new_company page
  And I should see "Hello Manoj"

Теперь я могу написать соответствующее определение шага / ^ Я правильно заполняю catcha $ / но что там нужно поместить?

Будьте нежны, я новичок в огурце, и это до сих пор расстраивает. Я не новичок в Rails или программировании иначе.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2010

Ты прав, Адитья. Помещение зависимого от среды кода в модели не является хорошим решением. Но вы можете «заглушить» bypass_humanizer? при необходимости:

# user.rb
class User
  include Humanizer

  require_human_on :create, :unless => :bypass_humanizer?

  protected

  def bypass_humanizer?
    false
  end
end

# step definitions for your scenarion
And /^I fill in the captcha correctly$/ do
  # from now any instance of User class will skip require_human_on validator
  User.any_instance.stubs(:bypass_humanizer?).returns(true)
end

# in Gemfile
group :development, :test do
  gem "mocha"
end

Теперь у вас есть модель с кодом, не зависящим от среды, и вы можете перевести ее в определенное состояние в любое время, когда вам нужно (конечно, для тестирования).

2 голосов
/ 20 декабря 2010

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

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

class User
  ...
  include Humanizer
  if Rails.env.production?
    require_human_on :create, :unless => :bypass_humanizer
  end
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...