Kri*_*lén 13 .net integration-testing
我正在使用新的最小 .NET 6 托管模型,并且进行了集成测试。
显然Program.cs需要配置值,所以我想使用自定义appsettings.Test.json文件。文档说我可以使用ConfigureAppConfiguration,但它的委托在之后运行Program,因此Program没有配置。以下是添加到Minimal API Playground 示例代码中的代码:
internal class PlaygroundApplication : WebApplicationFactory<Program>
{
private readonly string _environment;
public PlaygroundApplication(string environment = "Development")
{
_environment = environment;
}
protected override IHost CreateHost(IHostBuilder builder)
{
builder.UseEnvironment(_environment);
builder.ConfigureAppConfiguration(config =>
{
config.AddJsonFile(appSettings); // runs AFTER Program.cs
});
// Add mock/test services to the builder here
builder.ConfigureServices(services =>
{
});
return base.CreateHost(builder);
}
}
Run Code Online (Sandbox Code Playgroud)
我如何向 提供配置Program.cs?
var builder = WebApplication.CreateBuilder(args);
var keyVaultName = builder.Configuration["KeyVaultName"]; // null
builder.Configuration.AddAzureKeyVault(new SecretClient(
new Uri($"https://{keyVaultName}.vault.azure.net/"),
new DefaultAzureCredential()), new KeyVaultSecretManager());
Run Code Online (Sandbox Code Playgroud)
我可以将环境设置为Test,然后在程序中执行以下操作:
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json");
var keyVaultName = builder.Configuration["KeyVaultName"]; // has value from json
builder.Configuration.AddAzureKeyVault(new SecretClient(
new Uri($"https://{keyVaultName}.vault.azure.net/"),
new DefaultAzureCredential()), new KeyVaultSecretManager());
Run Code Online (Sandbox Code Playgroud)
但这是正确的吗?
| 归档时间: |
|
| 查看次数: |
10794 次 |
| 最近记录: |