Рассмотрим этот модульный тест клиента API с асинхронным индексом функций . Индекс должен сделать исключение, когда возникает ошибка HTTP, и это то, что я хочу проверить.public async Task TestServiceError()
{
var client = GetMockClient("{RETURN}", System.Net.HttpStatusCode.BadRequest);
await Should.ThrowAsync(async () => await client.Index());
}
< /code>
index () реализован как: < /p>
public async Task Index()
{
var response = await Client.GetAsync($"{Ingress}/");
if (!response.IsSuccessStatusCode)
throw new PreorderException(response.StatusCode, response.ReasonPhrase);
var received = await response.Content.ReadAsStreamAsync();
var readStream = new StreamReader(received, Encoding.UTF8);
return readStream.ReadToEnd();
}
< /code>
Таким образом, он бросает preorderexception по ошибке http code после того, как GetAsync OS ожидал.public void TestServiceError()
{
var client = GetMockClient("{RETURN}", System.Net.HttpStatusCode.BadRequest);
Should.Throw(async () => await client.Index());
}
< /code>
или < /p>
public Task TestServiceError()
{
var client = GetMockClient("{RETURN}", System.Net.HttpStatusCode.BadRequest);
await Should.ThrowAsync(() => client.Index());
}
< /code>
Может быть, это лучше всего? Поскольку есть задача возвращается из index и ожидание перед await, что задание ? Бросок синхронно, и ожидание делается в аргументе делегата. Кроме того, это просто модульный тест с коротким живым кодом, называемым один раз.await Should.ThrowAsync(async () => await client.Index());
await Should.ThrowAsync(async () => await client.FindByODLTest("order", "dealer", "lab"));
await Should.ThrowAsync(async () => await client.RegisterAsync(new()));
// etc.
Подробнее здесь: https://stackoverflow.com/questions/797 ... unit-tests