BeEquivalentTo不适用于匿名方法

时间:2018-04-19 13:29:43

标签: fluent-assertions

我使用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方法,因为我使用此方法进行了许多测试。

1 个答案:

答案 0 :(得分:1)

实际上,我们在5.0中引入了一些非常重大的变化,以便能够与匿名类型进行比较。 Excluding方法可以从期望中排除属性。由于您的期望没有Context对象,因此FA会抱怨。查看https://www.continuousimprover.com/2018/02/fluent-assertions-50-best-unit-test.html#redefining-equivalency