测试Nullable Guid

时间:2013-05-29 10:29:31

标签: asp.net-mvc asp.net-mvc-4 tdd

我正在使用ASP.NET MVC + C#,我有两个控制器操作如下:

public ActionResult Edit(Guid? id)
{

}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(SomeModel model)
{

}

现在,在浏览器中我可以导航到没有id的[GET] / controller / edit并得到一个null参数异常(如预期的那样),但我想知道的是我如何复制这个场景单元测试?

我有编辑方法的GET和POST版本,所以我无法提供controller.Edit(null)来测试它,因为代码无法编译。

提前致谢!

1 个答案:

答案 0 :(得分:0)

一种选择是使用ActionName属性来保持URL相同,但具有不同的方法名称。

[HttpGet]
[ActionName("Edit")]
public ActionResult GetEditForm(Guid? id)
{
    ...
}

[HttpPost]
[ActionName("Edit")]
public ActionResult SaveEditForm(SomeModel model)
{
    ...
}

然后,您当然可以从单元测试中调用正确的方法,并且ASP.NET的路由位负责获取正确的方法。