计算ViewResult或ActionResult中的项目 - MVC Visual Studio

时间:2017-02-06 20:20:22

标签: asp.net-mvc

我需要使用以下代码对控制器方法结果进行单元测试

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  var item = listItems[indexPath.row]
  item.completed = !item.completed //
  listItems[indexPath.row] = item
   tableView.reloadData()
 }

结果和p在调试时显示模型中的10个项目,但似乎我不能做Count或foreach来检查返回的记录数,因为这两个对象都是字典。 如何才能做到这一点? 感谢

2 个答案:

答案 0 :(得分:1)

ViewResult.Model属于object类型,您必须先将其强制转换为集合类型才能获得计数。

例如,如果您将整数列表作为模型传递给视图,则可以这样计算:

var model = p.Model;
var list = model as List<int>();
var count = list.Count;

答案 1 :(得分:0)

假设您的模型为IEnumerable<DataType>,并且您希望在单元测试中获得此模型,则必须将result.ViewData.Model强制转换为您的类型,然后执行断言:

var test = new StoreController();
var result = test.Index() as ViewResult;
var data = (IEnumerable<ModelType>) result.ViewData.Model;
Assert.AreEqual(10, data.Count());

参考:https://www.asp.net/mvc/overview/older-versions-1/unit-testing/creating-unit-tests-for-asp-net-mvc-applications-cs(清单4)