我有一堂課,我們將其稱爲Foo
,這是一個值類型,因此會覆蓋方法Equals
/GetHashCode()
方法。在單獨的測試夾具中,我想聲明Foo上的所有屬性都已正確設置,而不僅僅是用於相等的屬性。出於這個原因,我的測試斷言專門使用了ShouldBeEquivalentTo
方法,如果「兩個對象圖具有同樣命名的具有相同值的屬性,而不考慮這些對象的類型,文檔建議將兩個對象視爲等同」。FluentAssertions:ShouldBeEquivalentTo方法仍然調用Object.Equals()?
然而,看起來ShouldBeEquivalentTo
調用Foo.Equals
方法,得到一個真實的結果,然後繼續短路基於反射的屬性匹配的承諾。
這是預期的行爲?如果是這樣,在檢查FA來源時,我看到沒有簡單的方法來改變這種行爲(IEquivalencyStep
被宣佈爲內部)。有沒有其他方法可以解決這個問題?
編輯: 丹尼斯:是的,我比較的兩個物體屬於同一類型。總而言之,我已經在Foo類上覆蓋了Equals
,但不希望FA在我的單元測試中使用這種平等的概念。
我不完全明白你想要做什麼。該對象是否與您正在調用ShouldBeEquivalentTo()的對象相似? –
爲了將來的參考,丹尼斯在這裏解決了這個問題:http://fluentassertions.codeplex.com/discussions/428950,表示行爲改變了2.1 – argaz
Argaz,如果你把你的評論變成答案,我會接受它。 –