【发布时间】:2017-04-23 20:38:28
【问题描述】:
我是使用 Moq 测试的新手,所以我对 ReturnsAsync 有点困惑。
这是我的测试方法,我期望ReturnsAsync 应该接收将由Setup 中定义的方法返回的类型。我说的对吗?
但似乎 ReturnsAsync 应该有另一个签名 - 它正在寻找 Func 代表。
[TestClass]
public class TourObjectControllerTest
{
[TestMethod]
public async Task GetTourObjects()
{
var mockService = new Mock<ITourObjectService>(MockBehavior.Default);
mockService.Setup(x => x.GetAll()).ReturnsAsync(new Task<IEnumerable<TourObjectDTO>>);
var controller = new TourObjectController(mockService.Object);
var result = await controller.Get();
Assert.IsNotNull(result);
Assert.AreSame(typeof(TourObjectViewModel), result);
}
}
待测方法:
public async Task<IEnumerable<TourObjectViewModel>> Get()
{
IEnumerable<TourObjectViewModel> viewmodel = null;
try
{
var tourobjects = await _tos.GetAll();
viewmodel = Mapper.Map<IEnumerable<TourObjectViewModel>>(tourobjects);
}
catch (Exception ex)
{
Log.ErrorFormat("Method:{0} <br/> Error: {1}", System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
}
return viewmodel;
}
【问题讨论】:
-
智能感知怎么说? (我假设你在 VS 中工作。)
-
@KennethK.,它说 Task
> 不能分配给类型 Func >
标签: c# unit-testing asp.net-web-api moq