在ASP.MVC中测试具有相同名称的控制器中的GET / POST方法

时间:2017-03-24 22:55:06

标签: c# asp.net-mvc unit-testing

我有两种方法

[HttpGet]
public ActionResult Edit(int? id)
{
   // do stuff
   return View();
}
[HttpPost]
public ActionResult Edit(Object object)
{
  //do more stuff
  return View();
}

我正在尝试测试此方法,例如我想将null传递给控制器​​,我会出现歧义错误。

var controller = new Controller();
controller.Edit(null); // ambiguity error

如何区分我想调用GET或POST方法?

3 个答案:

答案 0 :(得分:3)

您还可以使用参数化调用。

[HttpGet]
public ActionResult Edit(int? id)
{
   return View();
}

[HttpPost]
public ActionResult Edit(Object myObject)
{
  return View();
}

var controller = new Controller();

controller.Edit(myObject: null);
controller.Edit(id: null);

答案 1 :(得分:1)

C#: Passing null to overloaded method - which method is called?

对此有一个很好的解释

基于此,我认为应该将其投射

controler.Edit((int?) null); // for int
controler.Edit((object) null); // for object

答案 2 :(得分:1)

如果您显式声明了参数,那么编译器在传递null值时将能够更具体地确定类型:

var controller = new Controller();

int? argInt = null;
var getResult = controler.Edit(argInt);

object argObj = null;
var postResult = controller.Edit(argObj);