Асинхронизированные или синхронизированные функции в модульных тестах?C#

Место общения программистов C#
Ответить
Anonymous
 Асинхронизированные или синхронизированные функции в модульных тестах?

Сообщение Anonymous »

Рассмотрим этот модульный тест клиента 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»