Огурец ньюб вопрос - PullRequest
       6

Огурец ньюб вопрос

1 голос
/ 15 августа 2010

У меня проблемы с отображением макета вошедшего в систему пользователя в огурце.

Когда пользователь входит в систему, он может сделать сообщение.

Мои ошибки:

(::) failed steps (::)

undefined local variable or method `user' for #<Cucumber::Rails::World:0x85974df4>    (NameError)
./features/step_definitions/tasklist_steps.rb:25:in `/^that I want to post a link$/'
features/tasklist.feature:10:in `Given that I want to post a link'

Failing Scenarios:
cucumber features/tasklist.feature:9 # Scenario: Submitting a Link

1 scenario (1 failed)
4 steps (1 failed, 1 skipped, 1 undefined, 1 passed)
0m0.432s

Мой огурец:

Given /^I am an authenticated user$/ do
  name = 'example'
  email = 'example@example.com'
  password = 'secret'

  Given %{I have one user "#{name}" with email "#{email}" and password "#{password}"}
  And %{I go to the user login page}
  And %{I fill in "username" with "#{name}"}
  And %{I fill in "password" with "#{password}"}
  And %{I press "Login"}
end

Given /^that I want to post a link$/ do
  title = 'My revolutionary post'
  website_link = "http://www.google.com"
  category = 'activism'
  user = authenticated user
  And %{I go to the new post page(#{user})}

Как я могу издеваться над аутентифицированным пользователем? так что тест пройдёт?

Ответы [ 2 ]

1 голос
/ 15 августа 2010

Линия

user = authenticated user

это проблема. Правый символ user не определен. authenticated метод здесь?

ОБНОВЛЕНИЕ: Вопрос уточнен

В вашей функции Cucumber у вас будет сценарий, который запускает примерно так:

Scenario: Post a link as an authenticated user
  Given I am logged in as the following user:
    | name     | John Doe |
    | email    | john@example.com |
    | password | secret |
  When I go to the posts page
  And I follow "New post"
  And I fill in the following:
    | title    | My revolutionary post |
    | category | Activism |

  etc

Затем создайте определение шага следующим образом:

Given /^I am logged in as the following user:$/ do |fields|
  @user = User.create!(fields.rows_hash)
end

Теперь @user будет доступен в ваших последующих определениях шагов для завершения сценария. Если вам нужно предоставить значения экземпляра модели по умолчанию для пользователя (то есть в дополнение к 3, которые я показал в сценарии), вам следует рассмотреть возможность использования драгоценного камня Factory Girl, и в этом случае вы можете создать пользователя следующим образом:

@user = Factory(:user, fields.rows_hash)
0 голосов
/ 15 августа 2010

Похоже, вы ожидаете, что

user = authenticated user

что-то значит.По крайней мере, из того, что вы предоставили, похоже, что это ничего не делает, если в другом месте не существует метода с именем «authenticated», который возвращает объект пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...