powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Тестирование метода контроллера через HttpClient
6 сообщений из 6, страница 1 из 1
Тестирование метода контроллера через HttpClient
    #39939790
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, есть проблема в написании тестов для методов контроллеров.

Глобальная задача: написать интеграционные тесты для все методов Api.
тестируем запрос-ответ

вот пример метода GetTracking

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
[Route("api/[controller]/[action]")]
[ApiController]
public class OrdersController : Controller
{
        readonly IMediator _mediator;
        readonly ILogger<OrdersController> _logger;

        public OrdersController(IMediator mediator, ILogger<OrdersController> logger)
        {
            _mediator = mediator;
            _logger = logger;
        }

        [HttpPost]
        [ProducesResponseType(typeof(ResponseGetTracking), 200)]
        public async Task<PipeResponse> GetTracking(int number)
        {

            PipeRequest request = new PipeRequest();

            request.Data = JToken.FromObject(new RequestGetTracking()
            {
                Number = number,
            });

            var resp = await _mediator.Send(request);


            return resp;
        }
}



вот написал такой тестик:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
        [Fact]
        public async Task Test_GetTrackingEw()
        {

            PipeRequest request = new PipeRequest();

            request.MetaData = JToken.FromObject(new RequestGetTracking()
            {
                Number = 12345
            });

            using (var client = new HttpClient(new HttpClientHandler { UseProxy = false, ClientCertificateOptions = ClientCertificateOption.Automatic }))
            {
                client.BaseAddress = new Uri("http://localhost:64555/");

                HttpResponseMessage response;

                try
                {
                    response = await client.PostAsJsonAsync("api/Orders/GetTracking", request).ConfigureAwait(false);
                  // ОШИБКА: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение
                }
                catch (Exception ex)
                {

                    throw new Exception(ex.Message);
                }

                if (response.IsSuccessStatusCode)
                {
                    //Error.show("SUCCES");
                }
                else
                {
                    //Error.show("FAIL");
                }
            }
        }



метод в контроллере не дергается, вываливается ошибка:
Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение
...
Рейтинг: 0 / 0
Тестирование метода контроллера через HttpClient
    #39939796
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так оно наверное (приложение с АПИ) просто не запущено на момент выполнения тестов.
...
Рейтинг: 0 / 0
Тестирование метода контроллера через HttpClient
    #39940183
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

.. или app.AddCors(), app.UseCors добавить в конфиг с Allow на localhost
...
Рейтинг: 0 / 0
Тестирование метода контроллера через HttpClient
    #39940276
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

в логах что?

я уже устал задавать этот вопрос...
...
Рейтинг: 0 / 0
Тестирование метода контроллера через HttpClient
    #39940650
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik
RegisteredUser,

.. или app.AddCors(), app.UseCors добавить в конфиг с Allow на localhost

CORS это технология только для браузеров и действует только внутри самого браузера. На вызовы откуда-либо еще (напр. HttpClient, curl, Postman, Invoke-WebRequest и т.п.) он никаким боком не влияет.
...
Рейтинг: 0 / 0
Тестирование метода контроллера через HttpClient
    #39998843
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кому интересно как это сделать, смотрите сюда
Creating Web API in ASP.NET Core 2.0

Рабочая схема!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Тестирование метода контроллера через HttpClient
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]