相关疑难解决方法(0)

AppSettings.json用于ASP.NET核心中的集成测试

我正在遵循本指南.我Startup在API项目中使用了一个appsettings.json配置文件.

public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)                
            .AddEnvironmentVariables();
        Configuration = builder.Build();

        Log.Logger = new LoggerConfiguration()
            .Enrich.FromLogContext()
            .ReadFrom.Configuration(Configuration)
            .CreateLogger();
    }
Run Code Online (Sandbox Code Playgroud)

我正在看的特别部分是env.ContentRootPath.我做了一些挖掘,看起来我appsettings.json实际上并没有复制到bin文件夹,但这很好,因为ContentRootPath返回MySolution\src\MyProject.Api\,这是appsettings.json文件所在的位置.

所以在我的集成测试项目中,我有这个测试:

public class TestShould
{
    private readonly TestServer _server;
    private readonly HttpClient _client;

    public TestShould()
    {
        _server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
        _client = _server.CreateClient();
    }

    [Fact]
    public async Task …
Run Code Online (Sandbox Code Playgroud)

c# configuration integration-testing appsettings asp.net-core

18
推荐指数
2
解决办法
1万
查看次数

如何在dotnet核心测试项目中使用用户机密

我想将集成测试的数据库连接字符串存储为用户密码.我的project.json看起来像这样:

{
  ...

  "dependencies": {
    ...
    "Microsoft.Extensions.Configuration.UserSecrets": "1.1.0"        
  },

  "tools": {
    "Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final"
  },

  "userSecretsId": "dc5b4f9c-8b0e-4b99-9813-c86ce80c39e6"
}
Run Code Online (Sandbox Code Playgroud)

我已将以下内容添加到我的测试类的构造函数中:

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddUserSecrets();
Run Code Online (Sandbox Code Playgroud)

但是,当我运行测试时,当它到达该行时抛出以下异常:

An exception of type 'System.InvalidOperationException' occurred in Microsoft.Extensions.Configuration.UserSecrets.dll but was not handled in user code

Additional information: Could not find 'UserSecretsIdAttribute' on assembly 'dotnet-test-nunit, Version=3.4.0.0, Culture=neutral, PublicKeyToken=null'.
Run Code Online (Sandbox Code Playgroud)

我错过了什么或是我想要不支持的东西吗?

configuration unit-testing app-secret .net-core

9
推荐指数
3
解决办法
3519
查看次数