【发布时间】:2012-11-19 18:16:31
【问题描述】:
这是我的场景:
我正在处理一个 .NET MVC 4.0 项目和一个存储库(如您所料),并尝试将 Moq/xUnit 测试库实现到一个 .NET 单元测试项目中。
我已经走到这一步了:
MVC 控制器
private IHOLService _service;
public PolicyController(IHOLService service)
{
_service = service;
}
public ActionResult Index()
{
var policies = _service.GetAllPolicies(100, 0).ToList();
return View(policies);
}
单元测试类
[Fact]
public void GetPolicies()
{
// Arrange
var mockService = new Mock<IHOLService>();
List<Policy> policy = new List<Policy>()
mockService.Setup(cr => cr.GetAllPolicies(10, 0)).Returns(policy);
var controller = new PolicyController(mockService.Object);
// policy here contains 0 results.
// Act
var result = (ViewResult)controller.Index();
var model = result.ViewData.Model; // equals 0.
// Assert
var listCategories = Assert.IsAssignableFrom<List<Policy>>(result.ViewData.Model);
// listCategories.Count equals 0 results.
Assert.Equal(10, listCategories.Count); // Thus always fails
}
我的问题是直接调用Controller时,一切正常,加载了100条策略。
但是,当我运行测试时,加载了 0 个产品,我猜测其中某个地方的模拟调用存在问题,可能与服务初始化有关。有没有人有过这种情况并可以提供建议?
另外,我测试我的服务,而不是我在数据层保存的存储库是否正确?
提前致谢。
【问题讨论】: