Flurl & xUnit 不会使用 await 捕获异常

Flurl & xUnit doesn't Catch Exception using await

我正在为 WebAPI 设置一个使用者并编写一些单元测试。我测试的 'act' 部分如下:

var dta = await service.AuthenticateAsync(customerId, userName, password, machineId);           

try
{
    service.AuthenticateAsync(customerId, userName, password, machineId).Wait();
}
catch (AggregateException ex)
{
    exUnauthorized = ex;
}
try
{
    httpTest.SimulateTimeout();
    await service.AuthenticateAsync(customerId, userName, password, machineId);
 }
 catch (AggregateException ex)
 {
     exTimeout = ex;
 }

我设置 Flurl HttpTest 如下:

httpTest.RespondWithJson(auth)
                .RespondWith(status: (int)HttpStatusCode.Unauthorized);

为了获得成功的第一个响应和未经授权的第二个响应。正如您稍后在代码中看到的那样,我设置了超时来测试它(如果我最初设置它,它似乎对所有请求都超时)。

第一次调用成功。我在 try 块中使用 Wait() 的第二个调用起作用并捕获了聚合异常。我使用 await 的第二个调用没有捕获到异常;它未通过单元测试,方法抛出异常。

我错过了什么?为什么 await 调用不起作用?

await 不会将异常包装在 AggregateException 中,因为它旨在用于异步代码。 Wait()Result 将基础异常包装在 AggregateException 中,因为它们旨在用于并行代码。

从技术上讲,并不是 await 展开 异常;它只是 不像 Wait/Result 那样包装