我想为DataService
方法模拟GetData
类。
Interface IProvider
{
Response GetAccountInfo();
}
public class Provider:IProvider
{
public Response GetAccountInfo()
{
Response resp = new Response();
Response resp1 = new Response();
DataService dataService = new DataService();
resp = dataService.GetData("Girish" , "Advani" );
resp1 = dataService.GetData("Pranav" , "Kawle" );
}
}
我在resp对象中获得了价值,但resp1
对象为null。我需要两个对象的值。您能为我提供解决方案吗?
答案 0 :(得分:0)
我想要类似下面的模拟1接口。
我认为您可以像这样模拟您的界面:
var mock = new Mock<IProvider>();
var fakeResponse = new Response()
{
//here set up the fake data
};
mock.Setup(x=>x.GetAccountInfo()).Returns(fakeResponse);
答案 1 :(得分:0)
如果我正确理解了您的问题,则需要在模拟对象上两次调用相同的方法。
您可以为此目的使用setupsequence
。
例如在测试方法下面,两次调用GetNextStuff方法,并在每次调用时返回两个不同的值。
[Test]
public void MogMethodThatReturnsADifferentValueWhenCalledASecondTimeUsingSequences()
{
Mock<ISomeService> _mockSomeService = new Mock<ISomeService>();
_mockSomeService.SetupSequence(x => x.GetNextStuff())
.Returns(new SomeStuff {Id = 1, Name = "Real"})
.Returns(null);
Assert.IsNotNull(_mockSomeService.Object.GetNextStuff());
Assert.IsNull(_mockSomeService.Object.GetNextStuff());
}
您可以refer this blog for more详细信息。