【发布时间】:2015-07-21 16:42:48
【问题描述】:
只是想要一些指导,我将如何对以下操作进行单元测试:
public ActionResult Index()
{
var model = _resolver.GetService<ISignUpViewModel>();
model.Location = _resolver.GetService<ILocations>().getLocations(string area);
return PartialView("Login", model);
}
private IDependencyResolver _resolverMock;
[TestMethod]
public void SignUpTest()
{
var _resolverMock = new Mock<IDependencyResolver>();
var ctrl = new HomeController(_resolverMock.Object);
var signUpMock = new Mock<ISignUpViewModel>();
var LocationsMock = new Mock<ILocations>();
_resolverMock.Setup(m => m.GetService(It.IsAny<Type>())).Returns(
signUpMock.Object);
_resolverMock.Setup(m => m.GetService(It.IsAny<Type>())).Returns(
LocationsMock.Object);
DependencyResolver.SetResolver(resolverMock.Object);
ctrl.Index();
ctrl.ViewData.Model = signUpMock;
}
如何在单元测试中建立模型?
另外,我如何从解析器调用 getLocations 方法?
不确定如何执行此操作?
【问题讨论】:
-
getLocations 返回一个 IEnumerable
-
您的控制器依赖于 ISignUpViewModelFactory,它具有创建方法 public ISignUpViewModel Create(string area) {}。我会将此接口传递给控制器构造函数并在您的操作方法中调用它。就目前而言,您正在使用 servicelocator _resolver,您是对的,它们是要测试的 PITA。
-
你能给我一个代码中的例子吗?不太关注你。
标签: asp.net-mvc unit-testing moq