如何检查视图模型是否正确?

时间:2015-06-11 10:51:47

标签: unit-testing asp.net-mvc-4

我有一个“索引”控制器方法,它返回一个模型为List<WhatsNew>的视图。我试图在单元测试中验证这个方法,但它给了我一个错误,因为它期待一个字符串。

控制器

public ActionResult Index()
{
   return View("Index", GetWhatsNew());
}

public List<WhatsNew> GetWhatsNew()
{
   WCMSDataContext wcmsContext = new WCMSDataContext();

   return (from p in wcmsContext.WhatsNews select p).ToList();
}

单元测试

[TestMethod]
public void Validate_Index_IList_WhatsNew_AS_Model()
{
    AppItemController controller = new AppItemController();  

    // Act
    var result = controller.Index();

    // Assert
    var model = ((ViewResult)result).Model as List<WhatsNew>;

    Assert.AreEqual("Index",  model.ToList());
}

错误

Assert.AreEqual failed. Expected:<Index (System.String)>. Actual:  <System.Collections.Generic.List`1[WCMS.WhatsNew] 

1 个答案:

答案 0 :(得分:0)

您正在比较string&#34;索引&#34;使用List<WhatsNew>

Assert.AreEqual("Index",  model.ToList());

你期待在这里发生什么?

您可以查看模型的内容:

Assert.AreEqual(someValue, model.Count);
Assert.AreEqual(someOtherValue, model[0].SomeProperty);

您还可以检查操作中返回的正确页面:

Assert.AreEqual("Index", ((ViewResult)result).ViewName);

目前,你似乎试图将两者混合......

您可能希望阅读this之类的内容作为检查控制器的基本介绍。