MOQ-为什么下面不嘲讽
本文关键字:为什么 MOQ- | 更新日期: 2023-09-27 18:26:39
有人知道为什么下面仍然调用YesService吗?
似乎IYesService与YesService是分开的。。
有什么想法吗?
public interface IYesService
{
string Hello();
}
public class YesService : IYesService
{
public string Hello()
{
return "Yes";
}
}
class Program
{
static void Main(string[] args)
{
var _mock = new Mock<IYesService>();
_mock.Setup(x => x.Hello()).Returns("No");
var service = new YesService();
var result = service.Hello();
Console.Write(result);
Console.ReadLine();
}
}
因为不使用_mock
,所以实例化YesService
并调用其上的方法。
当你消费这个界面时,你可以使用mocking:
public class ServiceUser
{
private IYesService _yesService;
public ServiceUser(IYesService yesService)
{
_yesService = yesService;
}
public string CallService()
{
return _yesService.Hello();
}
}
然后这样使用:
var serviceMock = new Mock<IYesService>();
serviceMock.Setup(x => x.Hello()).Returns("No");
var service = new ServiceUser(serviceMock.Object);
var result = service.CallService();
您正在Main方法中创建YesService(具体类)的实例。var服务行可以取消,var结果行应该变成:
var result = _mock.Object.Hello();
试试看。。。