BeEquivalentTo 不适用于匿名方法

BeEquivalentTo doesn't work with Anonymous Methods

我使用 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' does not contain a definition for 'Context' and no extension method 'Context' accepting a first argument of type 'IMemberInfo' could be found (are you missing a using directive or an assembly reference?)

我什至尝试定义泛型:

result.Should().BeEquivalentTo<MyResult>(

但这并没有帮助。

我有很多测试使用这种方法,如何才能继续使用匿名方法。

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