2010-08-18 65 views
0

我手动添加了单元测试来测试我正在构建的库。我有一些在他们相应的模型中测试没有任何问题的灯具。Rails3:单元测试库不会加载灯具

该测试用例继承自运行fixtures :all的ActiveSupport :: TestCase。

require 'test_helper' 
require 'mylib' 

class MyLibTest < ActiveSupport::TestCase 

    @user = User.find(1) 

    test "Setup" do 
    assert_equal(@user.id, 1) 
    end 

end 

即使user = User.find(1)在每一个测试实际上是一个优良样板工程,这个试验引发了一个异常:/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/relation/finder_methods.rb:287:in 'find_one': Couldn't find User with ID=1 (ActiveRecord::RecordNotFound)

我曾尝试移动fixtures :all到MyLibTest级(在另一篇文章建议),但没有区别。

如何让我的测试工作?

编辑
我发现了什么是错误的,这是不是在所有相关的灯具。我想在几个测试用例中使用相同的用户对象,所以我在类中添加了@user = User.find ,但不在测试用例内。当我意识到这一点并尝试将其放入测试用例时,一切都奏效了。尴尬:)

回答

0

我不能太确定到底是怎么了,没有看到你的灯具文件是如何设置的,但尝试这些:

  1. 尝试移动“灯具:所有”来test_helper.rb中。
  2. 在夹具文件中,你是否在每个记录上设置“id:”?如果没有,该ID实际上不会是简单的增量 - 它是基于灯具的名称创建的。尝试使用“User.first”而不是User.find(1)。如果您需要ID为1,则在灯具上设置“ID:1”。

希望这会有所帮助。

+0

嗨,“fixtures:all”在test_helper.rb中,并且yes id在用户灯具上设置。真正奇怪的是,User.find(1)在user_test.rb中有效,但在my_lib_test.rb中不起作用。 User.first返回nil。 – Christoffer 2010-08-19 04:54:48

+0

那么,我发现了什么是错的。感谢您花时间帮助:) – Christoffer 2010-08-19 05:04:28