我正在使用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)
来测试它,因为代码无法编译。
提前致谢!
答案 0 :(得分:0)
一种选择是使用ActionName
属性来保持URL相同,但具有不同的方法名称。
[HttpGet]
[ActionName("Edit")]
public ActionResult GetEditForm(Guid? id)
{
...
}
[HttpPost]
[ActionName("Edit")]
public ActionResult SaveEditForm(SomeModel model)
{
...
}
然后,您当然可以从单元测试中调用正确的方法,并且ASP.NET的路由位负责获取正确的方法。