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
猜你喜欢
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 输入按键事件处理程序 2022-01-01