Как использовать Factory Girl с огурцом и капибарой, как заполнять формы? - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть это:

Scenario: Login
  Given a user exists with first_name: "Fred"
  When I am on the home page
  And I fill in "email" with the user: "Fred"
  And I fill in "password" with the user: "Fred"
  And I submit the form
  Then I should see "Welcome"

Проблема в том, как мне заполнить поле email электронным письмом пользователя, созданного Factory Girl?Электронная почта должна быть уникальной, поэтому она определяется как последовательность:

sequence(:email) {|n| "joeschmoe#{n}@example.com"}

Я также использую pickle, но для fill in нет шага.Как я могу создать пользователя через фабрику и заполнить форму входа с той же информацией о пользователе?

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Я изменил это на следующее:

Scenario: Login
  Given a user exists with email: "fred@example.com", plain_password: "password", plain_password_confirmation: "password"
  And I am on the home page
  When I login with "fred@example.com", "password"
  And I submit the form
  Then I should see "Welcome"

Со следующими определениями шагов:

When(/^I login with "(\S+)", "(.*)"$/) do |email, password|
  fill_in 'username', :with => email
  fill_in 'plain_password', :with => password
end

# Can only be executed with Selenium or Envjs drivers
When /^I submit the form$/ do
  page.evaluate_script("document.forms[0].submit()")
end

И это работает!

1 голос
/ 04 февраля 2011

Вы должны добавить свой собственный шаг для этого.

When /^(?:|I )fill in "([^"]*)" with the #{capture_model}(?: within "([^"]*)")?$/ do |field, a, selector|

  with_scope(selector) do
    fill_in(field, :with => model!(a).send(field))
  end
end
...