Метод модульного тестирования с асинхронным - PullRequest
0 голосов
/ 02 апреля 2020

Я пишу модульный тест для метода, использующего Moq framework.

Метод вызывает метод Task<HttpResponseMessage> SendAsync(HttpRequestMessage request) из System.Net.Http с await.

Когда я выполняю свой тестовый пример, метод ничего не возвращает. Конечно, я делаю что-то не так. Пожалуйста, помогите мне найти его.

Обратите внимание, что этот вызов не является слабосвязанным.

Я проверял другие ответы, такие как Модульное тестирование в асинхронном режиме c - тестирование никогда не завершается , которые имеют слабую связь и могут быть поддельными.

Редактировать 1 : метод, аналогичный тому, который я пытаюсь выполнить модульным тестом

class Class1
    {
        public async Task<string> Method(string url)
        {

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get,url);
            HttpResponseMessage response = await new HttpClient().SendAsync(request);
            return System.Convert.ToString( response);
        }
    }

1 Ответ

0 голосов
/ 02 апреля 2020

Вы пытаетесь издеваться над HttpClient? Если так, то это не рекомендуемый подход; вместо насмешки HttpClient создает экземпляр реального HttpClient, передавая в конструктор смоделированный HttpMessageHandler.

Источник: https://gingter.org/2018/07/26/how-to-mock-httpclient-in-your-net-c-unit-tests/

Редактировать: читать содержимое HTTP-ответа, вам нужно вызвать метод response.Content.ReadAsStringAsync() вместо .ToString().

...