这是控制器上的两个动作。
[HttpPost]
public async Task<IActionResult> Post([FromBody] UserDto user)
{
// create a new user
}
[HttpPost("usergroup")]
public async Task<IActionResult> Post([FromBody] UserGroupDto usergroup)
{
// create a new user group
}
为这些编写单元测试时,我可以轻松地调用第一个:
var controller = new UserController();
var userDto = new UserDto{ UuId = Guid.NewGuid() };
var result = await controller.Post(userDto);
但是我看不到控制器上的路径来调用带有路径模板的post操作。这样做的语法是什么?
答案 0 :(得分:1)
您的调用是一个简单的重载方法,它与http动词无关。由于您的方法名为Post
,因此可能会造成混淆。那只是方法名称,您实际上并没有执行POST
操作。
要调用其他方法,只需使用常规调用即可:
var controller = new UserController();
var userGroupDto = new UserGroupDto { UuId = Guid.NewGuid() };
var result = await controller.Post(userGroupDto);
如果将方法重命名为CreateUser
和CreateGroup
,则更容易理解为什么以及如何工作。