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


基础教程推荐
猜你喜欢
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01