Rails夹具未加载rspec

所以,我正在尝试在rails项目的上下文中学习rspec BDD测试框架。 我遇到的问题是,在我的生活中,我无法在rspec描述中正确加载我的灯具。

免责声明:是的,有比使用固定装置更好的东西。 我正在尝试一次学习一件事,这里(特别是rspec)在我玩相关工具之前,比如工厂女孩,摩卡,自动测试等。因此,我试图让死者变得简单,如果笨重,固定装置工作。

无论如何,这是代码:

/test/fixtures/users.yml –

# password: "secret" foo: username: foo email: foo@example.com password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f password_salt: bef65e058905c379436d80d1a32e7374b139e7b0 bar: username: bar email: bar@example.com password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f password_salt: bef65e058905c379436d80d1a32e7374b139e7b0 

/spec/controllers/pages_controller_spec.rb –

 require 'spec/spec_helper' describe PagesController do integrate_views fixtures :users it "should render index template on index call when logged in" do session[:user_id] = user(:foo).id get 'index' response.should render_template('index') end end 

当我运行’rake spec’时我得到的是:

 NoMethodError in 'PagesController should render index template on index call when logged in' undefined method `user' for # /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/test_process.rb:511:in `method_missing' ./spec/controllers/pages_controller_spec.rb:7: 

也就是说,它不会将’user(:foo)’识别为有效方法。

灯具本身必须正常,因为当我通过’rake db:fixtures:load’将它们加载到开发数据库中时,我可以validation该数据库中是否存在foo和bar。

我觉得我在这里遗漏了一些明显的东西,但是我整天都在扯掉我的头发无济于事。 任何帮助,将不胜感激。

如果将灯具定义为“用户”,则使用它们的方式是通过具有相同名称的方法:

 describe PagesController do integrate_views fixtures :users it "should render index template on index call when logged in" do session[:user_id] = users(:foo).id get 'index' response.should render_template('index') end end 

单数仅与类本身(用户)相关。 如果这只是一个字母的错误,希望你还剩下一些头发。

如果您想全局设置灯具,可以在spec_helperrails_helper中添加:

 RSpec.configure do |config| config.global_fixtures = :all end