标签: aspnetcore-environment

如何使用WebApplicationFactory对.NET 6 Web Api项目进行集成测试?

我一直在使用 WebApplicationFactory 在 .NET 5、.NET Core 3.1 和 .NET Core 2.1 中进行集成测试。这对我来说一切正常。

我只是用以下命令创建我的项目:

dotnet new webapi
Run Code Online (Sandbox Code Playgroud)

然后我看到一个带有 Startup 类的Web api 项目。

然后我创建工厂类的一个实例:

private readonly WebApplicationFactory<Startup> factory = new WebApplicationFactory<Startup>();
Run Code Online (Sandbox Code Playgroud)

正如这里这里所解释的。

WebApplicationFactory 类是我非常喜欢的。它使编写集成测试变得容易。我很喜欢。Microsoft 文档还针对 .NET 6 引用了它

但是,在使用 .NET 6 时,如何确保我的代码可以编译?

提到的命令行语句:

dotnet new webapi
Run Code Online (Sandbox Code Playgroud)

结果是一个运行良好的项目,但是(安装了 .NET 6 SDK 时)没有 Startup 类……现在我的测试无法编译,原因只有一个:Startup 类不存在。

如何解决这个问题?我发现很难想象我不能再编写集成测试,因为WebApplicationFactory<Startup>不再编译。但现在,这就是我需要面对的现实。我该如何解决这个问题?我期待能够使用该类WebApplicationFactory并继续编写集成测试。但如何呢?

integration-testing aspnetcore-environment .net-6.0

4
推荐指数
1
解决办法
6985
查看次数

如何为控制台应用程序设置 ASPNETCORE_ENVIRONMENT?

我有以下包含托管服务的简单控制台应用程序:

    public static async Task Main(string[] args)
    {
        using (var host = Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
            {
                // db context
                services.AddEntityFrameworkNpgsql()
                    .AddDbContext<ApplicationDbContext>();

                // hosted services
                services.AddHostedService<ConsumeScopedServiceHostedService>();
                services.AddScoped<ProcessManuallySendings>();

                // services
                services.AddHttpClient<ISendPushService, SendPushService>(x
                    =>
                {
                    x.Timeout = TimeSpan.FromSeconds(65);
                });
            })
            .Build())
        {
            // Start the host
            await host.StartAsync();

            // Wait for the host to shutdown
            await host.WaitForShutdownAsync();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它适用于我的数据库,这意味着它需要连接字符串。我有三个appsettings.json文件:

在此处输入图片说明

在开发服务器上,我将使用Development环境,在生产服务器上 - Production. 在我的本地机器上,我将使用Local. 这很简单。我将在ASPNETCORE_ENVIRONMENT(操作系统环境变量)的帮助下获得它。

我使用 Linux,在我的 shell (zsh) 配置文件中,我有:

在此处输入图片说明

当我输入终端时,$ …

c# .net-core asp.net-core-hosted-services aspnetcore-environment

3
推荐指数
2
解决办法
3693
查看次数