2 回答

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
問(wèn)題在于 Fluent Assertions 無(wú)法將_id
泛型類型T
與_id
具體類型關(guān)聯(lián)起來(lái)Log
。
#1077中報(bào)告了類似的問(wèn)題,并通過(guò)#1087解決。截至撰寫本文時(shí),我們尚未發(fā)布包含此修復(fù)程序的新版本。
2019-08-10 編輯:
Fluent Assertions 5.8.0 已發(fā)布并修復(fù)了該問(wèn)題。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
首先,ObjectAssertionsExtensions改變是有意義的
public static void BeEquivalentToExcludingId<TExpectation>(this ObjectAssertions objectAssertion,
TExpectation expectation) where TExpectation : IEntity
到
public static void BeEquivalentToExcludingId(this ObjectAssertions objectAssertion,
IEntity expectation)
我還將每個(gè)斷言放入單獨(dú)的測(cè)試中以定位問(wèn)題。
事情發(fā)生是因?yàn)橹籅eEquivalentToExcludingId期望IEntity擁有財(cái)產(chǎn),卻得到額外的財(cái)產(chǎn)。這會(huì)讓一切都出錯(cuò)。如果它不會(huì)損害您的架構(gòu),只需修改屬性即可解決問(wèn)題。所以,唯一的改變是:_idLogMessageIEntitystring Message
public interface IEntity
{
[BsonId]
ObjectId _id { get; set; }
string Message { get; set; }
}
解決了問(wèn)題。
更新:
考慮到您的評(píng)論,只需將要排除的成員設(shè)置為相同的值,調(diào)用BeEquivalentTo并設(shè)置實(shí)際值,如下所示:
public static void BeEquivalentToExcludingId(this ObjectAssertions objectAssertion, IEntity expectation)
{
var subj = (IEntity)objectAssertion.Subject;
var subjId = subj._id;
var expId = expectation._id;
subj._id = ObjectId.Empty;
expectation._id = ObjectId.Empty;
objectAssertion.BeEquivalentTo(expectation);
subj._id = subjId;
expectation._id = expId;
}
這很hacky,但是很有效。
- 2 回答
- 0 關(guān)注
- 191 瀏覽
添加回答
舉報(bào)