【问题标题】:Cucumber newb question黄瓜新手问题
【发布时间】:2010-08-15 07:02:03
【问题描述】:

我无法在黄瓜中显示模拟登录用户。

当用户登录后,他们可以发帖。

我的错误:

(::) 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})}

如何模拟经过身份验证的用户?这样测试才能通过?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cucumber


    【解决方案1】:

    线

    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 gem,在这种情况下您可以像这样创建用户:

    @user = Factory(:user, fields.rows_hash)
    

    【讨论】:

    • 对。是的..我想我的问题是,我如何创建一个模拟以便它通过?我会在上面更新。
    • 啊,太棒了。所以工厂以 Cucumber 的田地为食?
    【解决方案2】:

    看起来像你期望的那样

    user = authenticated user
    

    表示某事。至少从您提供的内容来看,除非应该在其他地方有一个称为“已验证”的方法返回用户对象,否则它看起来不会做任何事情。

    【讨论】:

    • 对。是的..我想我的问题是,我如何创建一个模拟以便它通过?我会在上面更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多