Integration test and hosting ASP.NET Core 6.0 without Startup class(无需启动类即可集成测试和托管ASP.NET Core 6.0)
本文介绍了无需启动类即可集成测试和托管ASP.NET Core 6.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
要在以前版本的.Net Core中设置单元测试,我可以通过以下方式在测试项目中托管我的WebApp或WebAPI:
IHost host = Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(config =>
{
config.UseStartup<MyWebApp.Startup>();
config.UseUrls("https://localhost:44331/");
...
})
.Build();
当前的.Net 6.0没有使用Startup
类概念,因此无法引用。如何以正确、干净的方式在测试项目中托管AspNet应用程序?
推荐答案
注意,如果需要,您可以切换到通用宿主模型(使用启动类的模型)。
要使用new minimal hosting model设置集成测试,您可以使Web项目内部对测试项目可见,例如,通过将Next属性添加到csproj:
<ItemGroup>
<InternalsVisibleTo Include ="YourTestProjectName"/>
</ItemGroup>
然后您可以在WebApplicationFactory
中使用为Web应用生成的Program
类:
class MyWebApplication : WebApplicationFactory<Program>
{
protected override IHost CreateHost(IHostBuilder builder)
{
// shared extra set up goes here
return base.CreateHost(builder);
}
}
然后在测试中:
var application = new MyWebApplication();
var client = application.CreateClient();
var response = await client.GetStringAsync("/api/WeatherForecast");
或直接使用测试中的WebApplicationFactory<Program>
:
var application = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
builder.ConfigureServices(services =>
{
// set up servises
});
});
var client = application.CreateClient();
var response = await client.GetStringAsync("/api/WeatherForecast");
migration guide中的代码示例。
这篇关于无需启动类即可集成测试和托管ASP.NET Core 6.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:无需启动类即可集成测试和托管ASP.NET Core 6.0
基础教程推荐
猜你喜欢
- 如何激活MC67中的红灯 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30