为什么我的Rails Test :: Unit测试中我的fixture对象不可用?

根据此Rails指南 ,如果您创建一个fixture,它将在您的测试类中可用。

我在users.yml有这个夹具:

  stan: username:  hashed_password:  password_salt:  email:  

按照Rails指南,我试图像这样访问它:

 class SessionsControllerTest < ActionController::TestCase @user = users(:stan) # ... end 

我收到此错误:

 ./test/functional/sessions_controller_test.rb:5: undefined method `users' for SessionsControllerTest:Class (NoMethodError) from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:155:in `require' 

试试吧

 fixtures :users 

在你的课堂宣言之后

确保你有

 fixtures :all 

在你的test_helper.rb中

谢谢你的帮助。 我意识到我有各种声明和调用结构不正确。 我在引用的指南中没有明确解释这一点,但显然users(:stan)只能在一个should块中运行,或者在test_方法中的纯Test :: Unit中test_

这是一个非常古老的问题,但我在阅读rails教程时遇到了类似的问题。

我在UsersLoginTest集成测试开始时有一个设置方法,由于某种原因,我在那里引用的夹具似乎没有在测试中工作。 我必须在测试@user = users(:michael)的顶部有一行才能使它正常工作。

最后,我发现我已经复制了文件顶部的类声明,通过LAZY复制并从教程书中粘贴。 因此,如果有其他人遇到与此类问题有关的类似问题,请检查您是否犯了与我相同的愚蠢错误,并复制了文件的顶部!

 require 'test_helper' class UsersLoginTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) end