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