使用RSpec比较值而不考虑地址

时间:2015-03-13 10:32:37

标签: ruby rspec

使用RSpec,我想检查两个自定义对象的值是否相同。

假设我有一个Person类,它具有nameage属性,并实例化两个对象。

person_1 = Person.new(name: 'Jack', age: 20)
person_2 = Person.new(name: 'Jack', age: 20)

要查看它们是否具有所有相同的属性,我不能使用eq匹配器,因为它们是两个不同的对象。

鉴于我没有使用ActiveRecord,有没有办法在不比较所有个别属性的情况下这样做?

2 个答案:

答案 0 :(得分:0)

它可以帮到你:

https://github.com/TylerRick/active_record_ignored_attributes

a = Address.new(address: 'B St.')
b = Address.new(address: 'B St.')
a.same_as?(b) # => true

a = Address.new(address: 'B St.')
b = Address.new(address: 'Nowhere Road')
a.same_as?(b) # => false

答案 1 :(得分:0)

我看到了做你想做的两种主要方式。

您可以在Person课程上实施a custom matcheroverride the == method。第二个是好的,因为你可以在其他地方使用相等,甚至在测试之外。如果您要比较的内容非常具体(例如,您不关心特定测试中所有人的属性),则第一种方法很好。