.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.