您如何为单元测试调用模板化控制器操作?

时间:2018-07-17 10:20:05

标签: c# asp.net-mvc

这是控制器上的两个动作。

[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操作。这样做的语法是什么?

1 个答案:

答案 0 :(得分:1)

您的调用是一个简单的重载方法,它与http动词无关。由于您的方法名为Post,因此可能会造成混淆。那只是方法名称,您实际上并没有执行POST操作。

要调用其他方法,只需使用常规调用即可:

var controller = new UserController();
var userGroupDto = new UserGroupDto { UuId = Guid.NewGuid() };
var result = await controller.Post(userGroupDto);

如果将方法重命名为CreateUserCreateGroup,则更容易理解为什么以及如何工作。