您如何从xunit中的Controller中看到错误

时间:2019-04-18 01:59:02

标签: c# asp.net-core model-view-controller xunit

我用它来设置我的xunit集成测试。

编辑:我发布了错误的链接。这是正确的。

https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.2

我正在拨打一些会引发错误的电话

tabPanel("no-Eaccount",sidebarLayout(
    sidebarPanel(

      sliderInput("INVEST","Invest Range:",min = 0,max = 5000,value = c(100,300),pre="$"),
      sliderInput("Age","Age Range:",min = 0,max = 100,value = c(20,30)),
      radioButtons("DayTrade", "Day Trade:",
                   choices = c("Yes", "No","All"),
                   selected = "All")

    ),

    mainPanel(
      div(plotOutput("histogramplot"),style="width:100%")         
    )
    ))

状态代码为var request = new HttpRequestMessage(new HttpMethod("GET"), "/api/Lookup/ProvinceState/GetAllProvinceStates"); var response = await _client.SendAsync(request); Assert.Equal(HttpStatusCode.OK, response.StatusCode); ,响应数据为带有错误的html页面。我希望可以在测试窗口中获得正确的输出。

我在500上添加了.Configure(x => { });,这阻止了启动程序调用{​​{1}}。然后开始放文本。因此,我只是在测试中将文本写入控制台,但我不想每次测试都必须这样做。

必须有一个规范的解决方案。我想念什么?

1 个答案:

答案 0 :(得分:0)

好的。弄清楚了。基本上,您根本不需要任何异常处理程序。您只想让它一直掉下去,直到它到达xunit库为止。

实际上,这比我曾经想的要重要。如果操作不正确,则从持续集成中将不会得到正确的错误。

首次设置MVC应用程序时,会获得此小段代码

public void Configure(IApplicationBuilder app, IHostingEnvironment env)        {
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage(); //This is the problem
    }

,但是您仍然希望该行在常规开发期间执行。拥有所有JavaScript和CSS优势的HTML都会出错。

因此,您必须在XUNIT中覆盖它。从我在问题中发布的Microsoft链接开始。

带有

的样板
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
    builder.ConfigureServices(services =>
    //...

但是建造者也有.Configure(app => {});

但是您仍然需要MVC在app.UseMvc替代程序内启动Config。您还需要AddMvcConfigureServices替代程序。实际上,您可以返回到开发/生产Startup.cs并从Configure函数中复制所有行。至少,您应该具有:

public class CustomWebApplicationFactory<TStartup> 
    : WebApplicationFactory<TStartup> where TStartup: class
{
    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureServices(services => { services.AddMvc(); }).Configure(app => { app.UseMvc(); });
    }
}

这将阻止您的启动方法运行。 我敢打赌,大多数人只是在这个问题上放弃了。我真希望Microsoft能够发布它。

编辑:看看效果如何!

这里正在起作用。查看那些超链接。我现在可以单击链接,它会直接跳到代码中的那个位置。实际上,我已修复了该错误,然后再次将其修复以向所有人显示。

Error example