1

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

public ActionResult Edit(Guid? id)
{

}

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

}

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

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

提前致谢!

4

1 回答 1

0

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

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

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

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

于 2013-05-29T13:26:17.633 回答