Как я могу сделать FluentAssertions ShouldBeEquivalentTo неудачным, если у ожидаемых есть члены, которых нет на самом деле?

Я пытаюсь провести «строгое» сравнение, используя 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")].


person ashelley    schedule 14.10.2016    source источник


Ответы (1)


Вы не можете, так как он будет оценивать только свойства, которые имеет actual. Это то, что я хотел бы изменить в v5.

person Dennis Doomen    schedule 16.10.2016
comment
Спасибо, что дали мне знать. Если у меня будет шанс, я посмотрю и посмотрю, смогу ли я придумать запрос на включение. - person ashelley; 16.10.2016
comment
Это было бы здорово, но все, кроме тривиальности. - person Dennis Doomen; 17.10.2016