【问题标题】:BeEquivalentTo doesn't work with Anonymous MethodsBeEquivalentTo 不适用于匿名方法
【发布时间】:2023-03-19 10:45:01
【问题描述】:

我有一个使用 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”不包含“上下文”的定义,也没有 扩展方法“上下文”接受类型的第一个参数 可以找到“IMemberInfo”(您是否缺少 using 指令或 汇编参考?)

我什至尝试定义泛型:

result.Should().BeEquivalentTo<MyResult>(

但这没有帮助。

我如何继续使用 anon 方法,因为我有很多使用此方法的测试。

【问题讨论】:

    标签: fluent-assertions


    【解决方案1】:

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

    【讨论】:

    • 谢谢,完全删除选项工作正常。并感谢您的文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多