我有一个看起来像这样的方法。
public ActionResult Index(int ? page)
{
List<Request> reqList = re.DisplayAll();
const int pageSize = 5;
if (!string.Equals(Request.HttpMethod,"GET"))
{
page = 1;
}
int pageNumber = page ?? 1;
return View(reqList.ToPagedList(pageNumber,pageSize));
}
我的测试方法如下所示。
public void testReviewReturn()
{
var controller = CreateReviewController();
var reviewResult = controller.Index(1);
Assert.IsInstanceOf( typeof(ViewResult), reviewResult);
}
现在当我将1传递给Index函数时,它给出了一个异常,即存在Null Reference Exception并且测试失败。我不确定如何测试这种方法。需要一些建议。我是使用Nunit和ASP .Net MVC4进行单元测试的新手
答案 0 :(得分:1)
当您从测试项目中调用操作方法时, 请求 将为null。因此,当从测试项目运行时,您的If语句将抛出异常。使用浏览器执行操作方法时,您的代码将正常工作。
你应该做的是使用一些模拟框架来模拟请求。 This答案显示了如何使用Moq。