需要来自lib的黄瓜验证文件

时间:2010-03-05 22:30:58

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

我第一次尝试Cucumber而且我遇到了一个问题。我尝试使用RyanB's nifty authentication generator,但在运行我的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'

support / paths.rb:

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

routes.rb:

resources :users do
  resources :books
end

给我我的身份验证帮助程序方法(如current_user)的代码片段在我的lib /文件夹中。我试过了:

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

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

额外信息

gem env:

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,但在这种情况下我不认为这与任何事情有关。

3 个答案:

答案 0 :(得分:2)

据推测,您的应用程序要求您登录才能查看新的图书页面。

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

所以开始测试,我已登录并使用我登录的代码来定义current_user

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

不要创建实例变量

使用http://www.francisfish.com/debugging_cucumber_scripts_cucumber_and_devise_authenticati.htm

等登录

(向下滚动到关于设计插件的位)

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

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