繁体   English   中英

为什么 TestServer (AspNetCore) 在静态文件上给出 404 错误?

[英]Why the TestServer (AspNetCore) gives 404 error on static files?

我有一个示例服务器

var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();

在启动类中配置:

public void Configure(IApplicationBuilder app)
{
        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
}

我正在使用 xunit 测试(学习):

        public TestFixture()
        {
            var builder = new WebHostBuilder().UseStartup<TStartup>();
            _server = new TestServer(builder);

            Client = _server.CreateClient();
            Client.BaseAddress = new Uri(address);
        }

后来

        var response = await Client.GetAsync("http://localhost:51021/");
        Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        var responseString = await response.Content.ReadAsStringAsync();
        var content = await response.Content.ReadAsStringAsync();
        Assert.Contains("Hello World!", content);

一切正常(200)。 现在我正在更改 Startup.cs

    public void Configure(IApplicationBuilder app)
    {
        app.UseDefaultFiles();
        app.UseStaticFiles();
        //app.Run(async (context) =>
        //{
        //    await context.Response.WriteAsync("Hello World!");
        //});
    }

如果我用浏览器启动应用程序,一切正常(显示 index.html)。 但是如果我用 TestServer 调用它,我会收到(404 Not found)。 我的错误在哪里?

另一种方法是将这些文件复制到您的单元测试项目中

在此处输入图片说明

然后

在此处输入图片说明

只要您维护与您正在测试的项目相同的结构文件夹,它就会找出文件并将其传递给依赖注入过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM