1

我第一次尝试黄瓜,我遇到了一个问题。我尝试使用RyanB 的漂亮身份验证生成器,但在运行 Cucumber 功能时似乎无法使用辅助方法。

我的部分功能给我带来了问题:

when I am on the new book page                                   # features/step_definitions/web_steps.rb:18
      undefined local variable or method `current_user' for #<Cucumber::Rails::World:0x13a3b2a> (NameError)
      ./features/support/paths.rb:15:in `path_to'
      ./features/step_definitions/web_steps.rb:19:in `/^(?:|I )am on (.+)$/'
      features/user_story.feature:30:in `When I am on the new book page'

支持/paths.rb:

when /the new book page/
  user_path(current_user)+'/books/new'

路线.rb:

resources :users do
  resources :books
end

为我提供身份验证帮助方法(如 current_user)的代码位于我的 lib/ 文件夹中。我试过了:

require "#{Rails.root}/lib/authentication"

在我的 env.rb 中,但这似乎没有任何作用。那么我应该在这里做什么呢?我觉得应该有一个简单的解决方案,但这只是我的头脑。

额外信息

宝石环境:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.9.2 (2010-03-04 patchlevel -1) [i386-darwin9.8.0]
  - INSTALLATION DIRECTORY: /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%rails3beta
  - RUBY EXECUTABLE: /Users/ekoslow/.rvm/rubies/ruby-1.9.2-head/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%rails3beta/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-9
  - GEM PATHS:
     - /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%rails3beta
     - /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
     - :sources => ["http://gems.rubyforge.org", "http://gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org
     - http://gems.github.com

我正在运行 Rails 3.0.0.beta,但我认为这与这种情况下没有任何关系。

4

3 回答 3

2

大概您的应用程序需要您登录才能查看新书页面。

如果是这种情况,那么“正在登录”是此测试的先决条件,因此应该在您的 Givens 中。

因此,使用 Given I am logged in 开始测试并使用 I am logged in 代码来定义 current_user

于 2010-03-06T22:32:18.120 回答
0

current_user 仅在您的 Controller 上下文中定义。在您的黄瓜规格中,您只有外部数据。

一个很好的黄瓜测试点击按钮,而不是直接上URL。所以你确实需要知道这个 URL 是怎样的,或者你可以点击去哪里。

于 2010-03-05T22:34:32.517 回答
0

不要创建实例变量

使用类似http://www.francisfish.com/debugging_cucumber_scripts_cucumber_and_devise_authenticati.htm的方式登录

(向下滚动到有关设计插件的部分)

此示例代码适用于设计 gem,但您需要做的就是填写登录页面上的正确字段。

这使您可以使用 GUI 并成为应用程序的客户端。

于 2010-03-16T18:40:59.387 回答