2 回答
TA贡献1795条经验 获得超7个赞
问题在于 Fluent Assertions 无法将_id
泛型类型T
与_id
具体类型关联起来Log
。
#1077中报告了类似的问题,并通过#1087解决。截至撰写本文时,我们尚未发布包含此修复程序的新版本。
2019-08-10 编辑:
Fluent Assertions 5.8.0 已发布并修复了该问题。
TA贡献1829条经验 获得超13个赞
首先,ObjectAssertionsExtensions改变是有意义的
public static void BeEquivalentToExcludingId<TExpectation>(this ObjectAssertions objectAssertion,
TExpectation expectation) where TExpectation : IEntity
到
public static void BeEquivalentToExcludingId(this ObjectAssertions objectAssertion,
IEntity expectation)
我还将每个断言放入单独的测试中以定位问题。
事情发生是因为只BeEquivalentToExcludingId期望IEntity拥有财产,却得到额外的财产。这会让一切都出错。如果它不会损害您的架构,只需修改属性即可解决问题。所以,唯一的改变是:_idLogMessageIEntitystring Message
public interface IEntity
{
[BsonId]
ObjectId _id { get; set; }
string Message { get; set; }
}
解决了问题。
更新:
考虑到您的评论,只需将要排除的成员设置为相同的值,调用BeEquivalentTo并设置实际值,如下所示:
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 关注
- 136 浏览
添加回答
举报