2014-01-22 41 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這正是你想要的!甜。 –