Здравствуйте, я использую MoQ, и я пытаюсь понять, почему возвращаемое значение моего метода действительно используется. В приведенном ниже примере я создаю службу, используя поддельную зависимость интерфейса. Я устанавливаю, что должен возвращать метод интерфейса. Однако, когда служба использует мою ложную зависимость, возвращаемое значение равно нулю, а не то, которое я установил в методе Returns
. Почему это происходит?
Модель
public class SomeModel
{
public string Name {get;set;}
}
Модифицированная зависимость
public interface IDependency
{
Task<SomeModel> GetByIdAsync(string input);
}
Сервис с использованием макета Зависимость
public class SomeService
{
private IDependency dependency;
public SomeService(IDependency dependency)
{
this.dependency=dependency;
}
public async Task<SomeModel> GetByIdAsync(string id)
{
var model=await this.dependency.GetByIdAsync(id); //why is the result null , i have set the `Returns`
if(model==null)
{
throw new NotSupportedException();
}
return model;
}
}
Тестовый класс
public class MyTest
{
[Testcase("data")]
public async Task CanGetById(string value)
{
var model=new SomeModel{Name=value};
var dependency=new Mock<IDependency>();
dependency.Setup(x=>x.GetByIdAsync(value)).Returns(Task.FromResult(model)).Verifiable(); //i have set up the return of the dependency
var service=new SomeService(dependency.Object);
var clone=await service.GetByIdAsync(value);
dependency.Verify();
}
}