这是我的场景:
我正在使用一个带有存储库的 .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 个产品,我猜测其中的模拟调用存在问题,可能与服务初始化有关。有没有人以前有过这种情况并可以提供建议?
另外,我是否正确测试我的服务,而不是我在数据层保存的存储库?
提前致谢。