Ruby on rails 模型测试用例

Ruby on rails 模型测试用例,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个模型,我正在为它编写一个测试用例。我也在fixture中加载了数据,但是当我测试child对象是否等于child时,我得到了以下错误 NameError: undefined local variable or method `commvib' for #<CommvibTest:0x00000009b2cc68> ]. 如果CommVib与Comm类有关系。如果我理解正确,您应该将代码更改为 test "relationship test" do comm = Com

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

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

如果
CommVib
Comm
类有
关系。

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

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

我假设Comm模型有一个:commvib
关联。

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

您会得到
未定义的局部变量或方法“commvib”
,因为Ruby不知道
commvib
是什么意思,我也不知道。如果您试图加载一个fixture,语法可能是

comm_vibs(:one)
假设“comm_vib”是“comm_vib”的复数形式,并且您的夹具文件中有一个
one:

接下来,你的协会:

如果
CommVib
属于:comm
,您应该像

comm_vib.comm
该方法返回与
Comm_vib
关联的
Comm
对象-无需
查找它

最后,你的断言:

签名如下:

assert_equal(expected, actual, failure_message = nil)
因此,要使用它,您必须执行类似于
assert_equal(foo,bar)
-而不是
assert_equal(foo==bar)

总而言之,您的代码最终应该是这样的:

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

您在哪里定义commvib?commvib和Comm都是模型类谢谢Jakob,这很有帮助
assert_equal Comm.find(6), comm_vibs(:one).comm