Во время модульного тестирования GetAsync, как заставить HttpResponseMessage возвращать исключение, которое будет перехвC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Во время модульного тестирования GetAsync, как заставить HttpResponseMessage возвращать исключение, которое будет перехв

Сообщение Anonymous »

Я провожу модульное тестирование кода, похожего на приведенный ниже. Есть один вариант использования, когда я хочу, чтобы GetAsync выдавал исключение, которое перехватывалось бы в блоке catch.

Код: Выделить всё

try
{
var response = await client.GetAsync(url, cancellationToken);
}
catch(Exception e)
{
_logger.LogError(e)
}
Я высмеиваю HttpClient

Код: Выделить всё

var factory = new Mock();

var httpClient = new HttpClient(handler)
{
BaseAddress = new Uri("http://localhost:7100")
}

factory.Setup(_ => _.CreateClient(It.IsAny()))
.Returns(httpClient)
.Verifiable();
Здесь я высмеиваю HttpMessageHandler

Код: Выделить всё

var handler = new Mock();
handler
.Protected()
.Setup(
"SendAsync",
ItExpr.IsAny(),
ItExpr.IsAny()
)
.Returns(GetHttpResponseMessage())
.Verifiable();
GetHttpResponseMessage() — это метод, в котором я помещаю логику для возврата соответствующего HttpResponseMassage.

Код: Выделить всё

HttpResponseMessage GetHttpResponseMessage(int code)
{
if(code == 200)
{
return new HttpResponseMessage{ StatusCode = HttpStatusCode.OK };

}
else if(code == 500)
{
//StatusCode.InternalServerError   ???
//throw new Exception() ???
}
}
Ни один из двух вышеперечисленных не работает. Ни один из них не приводит к перехвату исключения блоком catch.
Спасибо за помощь

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-an-excep
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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