内部控制器我有视图将简单对象返回到视图。
public ActionResult SomeAction(int?id)
{
MyModel model = new MyModel();
return View(model);
}
如何对该控制器进行单元测试以检查ViewResult, 基本上
检查视图是否已初始化?基本上我怎么能模拟这个MyModel 在我的单元测试中?
[Test]
public void Can_Open_SomeAction()
{
// controller is already set inside `SetUp` unit step.
ViewResult res = this.controller.SomeAction() as ViewResult;
Assert.IsNotNull(res);
}
更新
public ActionResult SomeAction(int?id)
{
MyModel model = new MyModel();
this.PopulatePageCombos(id);
return View(model);
}
答案 0 :(得分:1)
你设置它的方式,我认为你只是想看看模型是不是null:
[Test]
public void Can_Open_SomeAction()
{
ViewResult res = this.controller.SomeAction() as ViewResult;
Assert.IsNotNull(res);
var model = result.Model as MyModel;
Assert.IsNotNull(model);
}
模拟仅在您从底层接口获取该模型的上下文中才有意义,例如,如果您有:
public ActionResult SomeAction(int?id)
{
MyModel model = _myModelQuerier.Fetch(id.Value);
return View(model);
}
那么你可以绕过类似的东西
var modelQuerierMock = MockRepository.GenerateMock<IMyModelQuerier>();
modelQuerierMock.Stub(x => x.Fetch(Arg<int>.Is.Anything)).Return(new MyModel(2, "product"));
在测试类中