我第一次尝试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,但在这种情况下我不认为这与任何事情有关。
答案 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并成为应用程序的客户端。