- Базовая конфигурация свойства.
NSubstitute предоставляет простой способ настроить свойство для возврата определенного значения. Предположим, у нас есть классUserServiceсо свойствомName. Мы можем настроить его поведение с помощью методаReturns:
var userService = Substitute.For<UserService>();
userService.Name.Returns("John Doe");
- Конфигурация свойства с помощью обратных вызовов.
Иногда нам необходимо выполнить специальную логику при доступе к свойству. NSubstitute позволяет нам использовать обратные вызовы для таких сценариев. Давайте рассмотрим пример:
var userService = Substitute.For<UserService>();
userService.Name.Returns(x =>
{
// Custom logic here
return "John Doe";
});
- Настройка свойств для выдачи исключений:
В некоторых случаях мы можем захотеть, чтобы свойство выдавало исключение при доступе. NSubstitute позволяет легко настроить такое поведение:
var userService = Substitute.For<UserService>();
userService.Name.Returns(_ => throw new Exception("Property access not allowed!"));
- Конфигурация свойства с несколькими возвращаемыми значениями:
NSubstitute позволяет нам настраивать свойства для возврата разных значений при последующих вызовах. Это полезно в сценариях, где свойство должно возвращать разные результаты при каждом обращении к нему:
var userService = Substitute.For<UserService>();
userService.Name.Returns("John Doe", "Jane Smith", "Alice Johnson");
- Конфигурация свойств с помощью CallBase:
NSubstitute предоставляет методCallBase, позволяющий вызывать вызовы реальных объектов для свойств, которые не были настроены явно. Это может быть полезно, когда мы хотим смешать реальное и замещающее поведение:
var userService = Substitute.ForPartsOf<UserService>();
userService.Name.Returns("John Doe");
userService.CallBase = true;
// The property "Name" will return "John Doe" as configured, and other non-configured properties will call the real implementation.
NSubstitute предлагает широкий спектр методов для простой настройки свойств. В этой статье мы рассмотрели несколько методов, включая базовую настройку свойств, обратные вызовы, создание исключений, множественные возвращаемые значения и использование CallBase. Используя эти методы, разработчики могут создавать гибкие и мощные макеты объектов для своих модульных тестов, что обеспечивает более надежную и надежную разработку программного обеспечения.
Не забудьте использовать возможности настройки свойств NSubstitute, чтобы улучшить ваши усилия по модульному тестированию и обеспечить качество и стабильность вашей кодовой базы.