0

我正在尝试为我的项目添加集成测试。项目结构如下所示:

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。

4

0 回答 0