我用它来设置我的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}}。然后开始放文本。因此,我只是在测试中将文本写入控制台,但我不想每次测试都必须这样做。
必须有一个规范的解决方案。我想念什么?
答案 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
。您还需要AddMvc
至ConfigureServices
替代程序。实际上,您可以返回到开发/生产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能够发布它。
编辑:看看效果如何!
这里正在起作用。查看那些超链接。我现在可以单击链接,它会直接跳到代码中的那个位置。实际上,我已修复了该错误,然后再次将其修复以向所有人显示。