代码之家  ›  专栏  ›  技术社区  ›  Bob Tway

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

  •  3
  • Bob Tway  · 技术社区  · 6 年前

    控制器上有两个动作。

    [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 回复  |  直到 6 年前
        1
  •  1
  •   nvoigt    6 年前

    您的调用是一个简单的重载方法,它与HTTP动词无关。因为方法的名称是 Post . 这只是方法名,实际上您没有 POST 行动。

    要调用其他方法,只需使用普通调用:

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

    如果将方法重命名为 CreateUser CreateGroup .