Вам необходимо внедрить экземпляр MyClass в качестве параметра конструктора, свойства или параметра метода. Затем вы можете смоделировать его и передать экземпляр макета, или, в зависимости от вашего кода, может не понадобиться его смоделировать, и вы можете просто передать экземпляр MyClass со свойствами, установленными для теста.
Для передачи MyClass
через конструктор:
public class ClassThatUsesMyClass
{
private readonly MyClass _myClass;
public ClassThatUsesMyClass(MyClass myClass)
{
_myClass = myClass;
}
public async Task<MyResponse> Handle(MyRequest request,
CancellationToken cancellationToken)
{
// This method uses the _myClass field instead of creating an instance of MyClass
}
}
Или как аргумент метода:
public class ClassThatUsesMyClass
{
public async Task<MyResponse> Handle(MyRequest request, MyClass myClass,
CancellationToken cancellationToken)
{
// This method uses the myClass argument instead of creating an instance of MyClass
}
}
В обоих случаях класс получает экземпляр MyClass
вместо , создающий его. Это то, что мы называем внедрение зависимости. (MyClass
- это зависимость, то есть то, от чего она зависит или в чем нуждается.)
Поскольку он передается в качестве аргумента, модульный тест может сначала установить его свойства.