【发布时间】:2018-12-01 01:25:09
【问题描述】:
我必须如下测试我的控制器
[HttpGet]
[Route("")]
[HandleError(View= "Error")]
public ActionResult Index(string name)
{
return View("Index", new MyViewModel){
Name = name,
Link = Request.UrlReferrer
}
}
我的 ViewModel 如下
public class MyViewModel{
public string Name{get;set;}
public Uri Link{get;set}
}
我的问题是,当我编写如下单元测试时,controller.Index(name) 总是返回 null,似乎是因为我没有模拟 ViewModel?但是我如何模拟函数内部的 ViewModel 呢?
我的目的是测试名称是否正确传递到 ViewModel,我认为我不应该模拟 MyViewModel,对吗?
另外,因为这是 HttpGet,我应该模拟 Http 请求吗?我不确定如何在 MVC.NET 中测试 Http 请求
[TestMethod]
public void Index_Return_ViewModel(){
string name = "name";
var controller = new MyController(foo, bar);
var result = controller.Index(name) as ViewResult;
var viewModel = controller.ViewData.Model as MyViewModel;
Assert.AreEqual("Index", result.ViewName);
}
【问题讨论】:
-
被测方法中的代码不准确。可能是笔误。请修复。
标签: c# asp.net unit-testing model-view-controller identityserver3