我已经开始FluentAssertions在 REST 端点的集成测试中使用库。问题是我必须比较两个实体,但排除它们的_id属性。该属性是从我的界面继承的IEntity。
public interface IEntity
{
[BsonId]
ObjectId _id { get; set; }
}
例如Log类看起来像这样
[DataContract]
public class Log : IEntity
{
[BsonId]
public ObjectId _id { get; set; }
public string Message { get; set; }
}
在测试中我像这样比较它们并且它有效
retrieved.Should()
.BeEquivalentTo(expected, options => options.Excluding(member => member._id));
但是,当我将此功能提取到扩展方法以供重用时,它不起作用。它不会忽略该_id成员。
public static class ObjectAssertionExtensions
{
public static void BeEquivalentToExcludingId<TExpectation>(this ObjectAssertions objectAssertion, TExpectation expectation) where TExpectation : IEntity
{
objectAssertion.BeEquivalentTo(expectation, options => options.Excluding(member => member._id));
}
}
当我将通用扩展方法更改为特定类型Log时,它就可以正常工作。我在这里准备了带有示例的最小项目。有没有办法让它工作,为什么它不能正常工作?我将尝试检查 github 存储库中的代码FluentAssertions。谢谢。
一只萌萌小番薯
烙印99
相关分类