我正在尝试为我的项目添加集成测试。项目结构如下所示:
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 开始,它工作正常,但是当我尝试在我的 NamesController 中添加 TestServer 时,它总是返回 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,并且服务器使用的 baseurl 是 http://localhost 而不是 http://localhost:5000,这是 launchSettings.json 中的内容。将不胜感激一些方向来了解 TestServer 的工作原理,谢谢
注意:我还添加了 _server.BaseAddress = "http://localhost:5000"; 但这也不起作用。它一直显示404。