.net core TestServer

Я пытаюсь добавить в свой проект интеграционные тесты. Структура проекта выглядит так:

      Source (a solution folder)
--MyApp (library)
   -Controllers
   -DataAccess
   -Models
   -Startup.cs

--MyApp.Host
   --Properties
     -launchSettings.json  
   -appsettings.dev.json
   -Program.cs

Test (solution Folder)
--MyApp.Tests (library)
  NamesControllerTests.cs

Приложение запускается с использованием MyApp.Host, оно работает нормально, но когда я пытаюсь добавить TestServer в свой NamesController, он всегда возвращает 404 и, похоже, не добавляет правильный базовый адрес (это всегда http: // localhost) без порт, указанный в launchsettings.json

Вот моя установка на тест:

      [TestFixture]
public class NamesControllerTests
{
    private readonly TestServer _server;
    private readonly HttpClient _client;
    
    public NamesControllerTests()
    {
        _server = new TestServer(new WebHostBuilder()
            .UseEnvironment("dev")
            .UseStartup<Startup>());   //using start up in MyApp library
        _client = _server.CreateClient();
    }

    [Test]
    public async Task ReturnName()
    {
        var response = await _client.GetAsync("/api/GetName");
        response.EnsureSuccessStatusCode(); //on breakpoint always 404
    }
}

Когда я добавляю точку останова в строку с ответом, я всегда получаю 404, а базовый URL-адрес, который использует сервер, - это http: // localhost, а не http: // localhost: 5000, который находится в launchSettings.json. Буду признателен за руководство, чтобы понять, как работает TestServer, спасибо

ПРИМЕЧАНИЕ . Я также добавил _server.BaseAddress = "http: // localhost:5000"; но это тоже не сработало. Постоянно показывает 404.

0 ответов

Другие вопросы по тегам