模型测试用例

时间:2013-09-10 12:40:27

标签: ruby-on-rails ruby

我有一个模型,我正在编写一个测试用例。我也在夹具中加载了数据,但是当我测试子对象等于child时,我得到以下错误

NameError: undefined local variable or method `commvib' for #<CommvibTest:0x00000009b2cc68> ].

我的班级名为CommVib,我的考试代码是

test "relationship test" do
  assert_equal(Comm.find(6) == commvib.Comm.find(6))
end

其中CommVibbelongs_to类的关系Comm

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您应该将代码更改为

test "relationship test" do
  comm = Comm.find(6)
  assert_equal(comm == comm.commvib.comm, true)
end

我认为Comm模型有has_one :commvib关联。

答案 1 :(得分:0)

这里有一些问题。首先,错误信息:

你得到undefined local variable or method 'commvib'因为Ruby不知道commvib是什么意思,我也不知道。如果你想加载一个fixture,语法可能是

comm_vibs(:one)

假设“comm_vibs”是“comm_vib”的复数,并且您的fixture文件中有一个one:键。

接下来,您的协会:

如果CommVib belongs_to :comm,您应该像

一样引用它
comm_vib.comm

该方法返回与Comm相关联的comm_vib对象 - 无需find

最后,你的断言:

assert_equal有这个签名:

assert_equal(expected, actual, failure_message = nil)

因此,要使用它,您必须执行assert_equal(foo, bar)之类的操作 - 而不是assert_equal(foo == bar)

总而言之,您的代码最终可能看起来像这样:

assert_equal Comm.find(6), comm_vibs(:one).comm