【问题标题】:Overriding ActiveRecord::Base == operator - good idea?覆盖 ActiveRecord::Base == 运算符 - 好主意吗?
【发布时间】:2014-01-22 21:11:15
【问题描述】:

我在使用 Rspec 和 ActiveRecord::Base 时遇到问题。我想检查我的解析器是否正确创建了模型实例。

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

我求助于覆盖 == 运算符来匹配我的所有字段,而没有 id。不过,我觉得这是一个令人讨厌的解决方案。

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

【问题讨论】:

  • 我的预感是 ActiveRecord 内部的很多东西都会发生灾难性的破坏。

标签: ruby-on-rails ruby activerecord rspec


【解决方案1】:

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

我会编写(或通过谷歌找到)一个名为“matches_attributes”的 rspec 匹配器,它将比较每个对象的属性列表,如果它们相同则返回 true。

【讨论】:

  • 看来这样的匹配器确实是要走的路。发现这个问题link 并且它的答案被证明是有帮助的。感谢您的意见!
  • @Lasooch 这正是你想要的!甜蜜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2010-09-08
相关资源
最近更新 更多