Решение .Match()
не возвращает правильное сообщение об ошибке. Поэтому, если вы хотите иметь хорошую ошибку и только одно утверждение, используйте:
result.Should().BeEquivalentTo(new MyResponseObject()
{
Property1 = "something",
Property2 = "anotherthing"
});
Анонимные объекты (используйте осторожно!)
Если вы хотите проверить только определенных членов, используйте:
result.Should().BeEquivalentTo(new
{
Property1 = "something",
Property2 = "anotherthing"
}, options => options.ExcludingMissingMembers());
Примечание. При таком тестировании вы пропустите (новых) участников. Так что используйте только в том случае, если вы действительно хотите проверить только определенных участников сейчас и в будущем. Неиспользование параметра исключения заставит вас редактировать тест при добавлении нового свойства, и это может быть хорошо.
Несколько утверждений
Примечание. Все приведенные решения дают вам одну строку утверждений. На мой взгляд, нет ничего плохого в нескольких строках утверждений, если функционально это одно утверждение.
Если вы хотите этого, потому что вам нужно несколько ошибок одновременно, подумайте о том, чтобы обернуть свои многострочные утверждения в файл AssertionScope
.
using (new AssertionScope())
{
result.Property1.Should().Be("something");
result.Property2.Should().Be("anotherthing");
}
Приведенный выше оператор теперь будет выдавать обе ошибки сразу, если они обе не работают.
https://fluentassertions.com/introduction#assertion-scopes
person
Nick N.
schedule
04.10.2018