如何测试异步Task方法

时间:2019-05-17 13:30:01

标签: .net unit-testing http

如何测试异步Task方法 我的方法定义:

class TestClient{
 public async Task SendTest(TestDto testDto, string correlationId)
 {
   await PostAsync(Routes.Test, body: testDto, correlationId: 
   correlationId).ConfigureAwait(false);
 }
}

实现路线的控制器:

[HttpPost]
[ProducesResponseType(201)]
[ProducesResponseType(400)]
[Route(Routes.Test)]
public async Task<IActionResult> SendEmailNotification([FromBody] TestDto 
testDto)
{
 await _testService.TestNotify(testDto);

 return StatusCode(201);
}

当我在测试方法中使用以下内容时:

var result = await _mockTestClient.Object.SendTest(testDto, null); 

我收到了无法将void分配给隐式类型变量的错误

1 个答案:

答案 0 :(得分:2)

  

我收到了无法将void分配给隐式类型变量的错误

SendTest返回的类型为Task。因此,表达式_mockTestClient.Object.SendTest(testDto, null)的类型也是Task

await解开Task / Task<T>。对于Task,没有返回类型。因此,表达式await _mockTestClient.Object.SendTest(testDto, null)的类型为void,因此无法将void分配给变量-在这种情况下为result

如果您只想检查异常,则不要尝试分配给局部变量:

await _mockTestClient.Object.SendTest(testDto, null);