Модульное тестирование — важная практика разработки программного обеспечения, обеспечивающая уверенность в правильности и надежности кода. Одной из популярных библиотек для написания выразительных и читаемых модульных тестов является Fluent Assertions. В этой статье мы рассмотрим концепцию незнания свойств и то, как этого можно достичь с помощью Fluent Assertions. Мы представим несколько методов вместе с примерами кода, чтобы продемонстрировать их использование.
- Использование метода
ShouldBeEquivalentTo.
МетодShouldBeEquivalentToв Fluent Assertions позволяет сравнивать объекты на предмет структурного равенства. По умолчанию он выполняет глубокое сравнение свойств объекта. Однако вы можете настроить его на игнорирование определенных свойств с помощью методаIgnoring.
var expected = new Person { Name = "John", Age = 30 };
var actual = new Person { Name = "John", Age = 25 };
actual.ShouldBeEquivalentTo(expected, options => options.Ignoring(p => p.Age));
В приведенном выше примере свойство Ageигнорируется во время сравнения, что обеспечивает более гибкое утверждение.
- Использование метода
Excluding.
Fluent Assertions предоставляет методExcluding, который позволяет исключать определенные свойства из сравнения. Этот метод обеспечивает более лаконичный способ незнания свойств.
var expected = new Order { Id = 1, TotalAmount = 100 };
var actual = new Order { Id = 1, TotalAmount = 150 };
actual.ShouldBeEquivalentTo(expected, options => options.Excluding(p => p.TotalAmount));
Здесь свойство TotalAmountисключено из сравнения, что позволяет тесту сосредоточиться на других важных аспектах.
- Использование метода
IgnoringProperties.
МетодIgnoringPropertiesв Fluent Assertions позволяет игнорировать все свойства данного типа. Это особенно полезно при работе со сложными объектами, содержащими вложенные свойства.
var expected = new Customer { Id = 1, Name = "John Doe", Address = new Address { City = "New York" } };
var actual = new Customer { Id = 1, Name = "John Doe", Address = new Address { City = "Los Angeles" } };
actual.ShouldBeEquivalentTo(expected, options => options.IgnoringProperties(typeof(Address)));
В этом примере свойство Addressполностью игнорируется во время сравнения, что гарантирует проверку только соответствующих свойств.
Fluent Assertions предоставляет несколько удобных методов игнорирования свойств во время модульного тестирования. Выборочно игнорируя или исключая свойства, вы можете сосредоточить свои утверждения на наиболее важных аспектах, что приведет к более удобным в сопровождении и кратким тестам. Включение этих методов в рабочий процесс модульного тестирования может улучшить читаемость теста и сократить ненужное обслуживание теста.
Используя функции Fluent Assertions для контроля свойств, вы можете писать более выразительные, гибкие и надежные модульные тесты, повышая общее качество вашего программного обеспечения.