使用RSpec,我想检查两个自定义对象的值是否相同。
假设我有一个Person
类,它具有name
和age
属性,并实例化两个对象。
person_1 = Person.new(name: 'Jack', age: 20)
person_2 = Person.new(name: 'Jack', age: 20)
要查看它们是否具有所有相同的属性,我不能使用eq
匹配器,因为它们是两个不同的对象。
鉴于我没有使用ActiveRecord,有没有办法在不比较所有个别属性的情况下这样做?
答案 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 matcher或override the == method。第二个是好的,因为你可以在其他地方使用相等,甚至在测试之外。如果您要比较的内容非常具体(例如,您不关心特定测试中所有人的属性),则第一种方法很好。