Mocking PostAsyn c и другие методы с Moq в UnitTest - PullRequest
0 голосов
/ 27 февраля 2020

Я искал пару дней, как издеваться над HttpClient, и в большинстве ответов предлагалось издеваться над HttpResponseMessage - в частности, SendAsyn c.

Я пробовал все это, но каждый раз получал ошибку, которая ' Сбой соединения - машина не отвечает ', что, похоже, HttpClient вообще не было поддельным

var mockHandler = new Mock<HttpMessageHandler>();

mockHandler.Protected()
           .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
        ItExpr.IsAny<CancellationToken>())
           .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));

//Here goes call to MethodINeedToTest()

Но это не помогает. Я не уверен, что я что-то упустил или мне нужно использовать HttpClient с внедрением зависимости вместо выражения «using»?

1 Ответ

0 голосов
/ 28 февраля 2020

Лучшее, что вы можете сделать, - это передать http-клиент конструктору вашего класса. Тогда вы можете пройти макет снаружи. В настоящее время для класса не очень хорошая практика скрывать зависимости.

...