我如何使FluentAssertions ShouldBeEquivalentTo失败,如果预期会有成员实际没有

时间:2016-10-14 23:35:49

标签: c# asp.net-web-api fluent-assertions

我正在尝试使用FluentAssertions ShouldBeEquivilantTo进行“严格”比较。如果“实际值”具有“期望值”不具有的属性但是我需要实现该行为以便如果“期望值”具有“实际值”不具有的属性我似乎也需要它失败。换句话说,我正在寻找两个对象中存在的所有属性,否则我希望我的测试失败。

示例:我希望失败:

        var actual = new
        {
            a = "simple",
            b = new
            {
                c = "complex"
            }
        };

        var expected = new
        {
            a = "simple",
            b = new
            {
                c = "complex"
            },
            d = "missing"
        };

        actual.ShouldBeEquivalentTo(expected);

反正有没有实现这种行为?我曾尝试查看IMemberSelectionRule但似乎ISubjectInfo和IEquivalencyAssertionOptions似乎不包含有关“期望值”的信息

我可能在这里遗漏了一些东西,所以如果这是一个愚蠢的问题我会道歉。

另外,我比较匿名类型的原因是因为这些是来自另一个程序集中的WebApi控制器的响应。我通过使用[assembly:InternalsVisibleTo(“testsuite”)]符号将我的测试套件添加为友好来暴露匿名类型。

1 个答案:

答案 0 :(得分:0)

您不能,因为它只会评估actual所拥有的属性。这是我想在v5中更改的内容。