我使用FA 4.19.3进行了xunit测试。我最近升级到5.3.0没有太多问题,除了一些对象图比较。
旧测试:
var result = await MyClass.GetResultAsync();
result.ShouldBeEquivalentTo(new
{
StatusCode = 200,
Exception = (Exception)null
}, options => options.Excluding(o => o.Context));
但是因为期望是一个匿名方法,所以排除错误:
' IMemberInfo'不包含' Context'的定义和不 扩展方法'上下文'接受第一个类型的参数 ' IMemberInfo'可以找到(你是否错过了使用指令或 装配参考?)
我甚至尝试过定义泛型:
result.Should().BeEquivalentTo<MyResult>(
但这没有帮助。
我如何继续使用anon方法,因为我使用此方法进行了许多测试。
答案 0 :(得分:1)
实际上,我们在5.0中引入了一些非常重大的变化,以便能够与匿名类型进行比较。 Excluding
方法可以从期望中排除属性。由于您的期望没有Context
对象,因此FA会抱怨。查看https://www.continuousimprover.com/2018/02/fluent-assertions-50-best-unit-test.html#redefining-equivalency