2015-03-13 19 views
0

使用RSpec,我想檢查兩個自定義對象的值是否相同。使用RSpec比較不考慮地址的值

假設我有一個Person類,它具有nameage屬性,並實例化兩個對象。

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

,看看他們是否都相同的屬性,我不能使用eq匹配,因爲它們是兩個不同的對象。

鑑於我沒有使用ActiveRecord,有沒有辦法做到這一點,而無需比較所有的個人屬性?

回答

0

我覺得那樣做你想要什麼的兩種主要方式。

您可以在Person類上執行a custom matcheroverride the == method。其次是好的,因爲你可以在其他地方使用平等,即使在測試之外。如果您比較的內容非常具體(例如,您不關心特定測試中的所有人的屬性),那麼第一種方法是很好的。

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 
+0

謝謝,它看起來不錯。但我目前沒有使用ActiveRecord。 – 2015-03-13 10:44:07

+0

您可以將此寶石添加到gem文件中的測試組中 – user3118220 2015-03-13 10:45:02