简单测试ViewResult和mocking在控制器中使用的模型

时间:2016-06-15 10:17:10

标签: asp.net-mvc unit-testing nunit moq

内部控制器我有视图将简单对象返回到视图。

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);
 }

1 个答案:

答案 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"));

在测试类中