2014-01-22 28 views
0

我遇到了Rspec和ActiveRecord :: Base的问题。我想检查我的解析器是否正确创建模型实例。重写ActiveRecord :: Base ==操作符 - 好主意?

我试着将新对象与新对象进行比较,但发现它不起作用。然后我试着保存这些对象,但这也不是一个解决方案 - 因为如果我也创建了预期的模型实例,那么ID将会有所不同。

我诉诸覆盖==运算符,以匹配所有我的领域,没有ID。尽管如此,我觉得这是一个棘手的解决方案。

解决此问题的正确方法是什么?

+0

我的预感是,ActiveRecord内部的大量内容会突然崩溃。 –

回答

3

就我个人而言,我认为这是一个坏主意。你如何去测试纯粹的平等?

我会写一个rspec匹配器(称为say“matches_attributes”)来比较每个对象属性列表,如果它们是相同的,则返回true。

+0

看起来这样的匹配器确实是要走的路。发现这个问题[链接](http://stackoverflow.com/questions/4763983/comparing-activerecord-objects-with-rspec)及其答案证明是有帮助的。感谢您的输入! – Lasooch

+0

@Lasooch这正是你想要的!甜。 –