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
我使用 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