NSubstitute

Редактировал(а) Alexandr Fokin 2026/03/17 15:36

 
Преимущества
Moq для создания заглушки используется билдер, который формирует экземпляр. NSubstitute позволяет редактировать заглушку в любой момент (а не только в на этапе конфигурации), иногда это может быть удобно. 
NSubstitute позволяет указывать тип заглушки не только через Generic, но и через Reflection | Рефлексия указывая Type интерфейса.
Также есть возможность указать метод через MethodInfo.
 
  
Сценарии
Регистрация обработчиковvar stub = Substitute.For<IService>();
// хендлер метода без возврата значения.
stub
  .When(e => e.Action1(Arg.Any<string>()))
  .Do(e => { });
// хендлер, возвращающий результат
stub.Action1(Arg.Any<string>())
  .Returns(e => "test");
Создание заглушки по Typevar stub = Substitude.For(typeof(IService), []);
Регистрация обработчика по MethodInfo

Can NSubstitute mock the return of a MethodInfo?
https://stackoverflow.com/questions/41918308/can-nsubstitute-mock-the-return-of-a-methodinfo

var stub = Substitute.For<IService>();
var methodInfo = typeof(IService).GetMethod("Method1");
methodInfo.Invoke(stub, null).Returns((e) => "stub");
  

Внутренние ссылки:

Дочерние страницы:
Обратные ссылки: