我正在尝试为获取所有我的产品设置测试,但是我正在获取ArgumentNullException,但我不明白为什么,我最近开始研究此问题,所以...

这是错误消息


  消息:System.ArgumentNullException:值不能为null。
  参数名称:connectionString


private readonly TestServer server;
private readonly HttpClient client;

public ProductControllerIntegrationTests()
{
    server = new TestServer(new WebHostBuilder()
        .UseStartup<Startup>());
    client = server.CreateClient();
}

[Fact]
public async Task Product_Get_All()
{
    var response = await client.GetAsync("/api/Products");
    response.EnsureSuccessStatusCode();
    var responseString = await response.Content.ReadAsStringAsync();
    var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(responseString);
    products.Count().Should().Be(12);
}


提前致谢!

最佳答案

消息:System.ArgumentNullException:值不能为null。
  参数名称:connectionString


对于此错误,是由于您在创建TestServer时未指定配置而引起的。在产品项目中,WebHost.CreateDefaultBuilder(args)中的Program.cs将配置来自“ appsettings.json”的负载Microsoft.Extensions.Configuration.IConfiguration。

如果要使用生产appsettings.json进行测试,可以尝试如下所示:

        public ProductControllerIntegrationTests()
    {
        var configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();

        server = new TestServer(new WebHostBuilder()
            .UseConfiguration(configuration)
            .UseStartup<Startup>()
            );
        client = server.CreateClient();
    }

09-06 18:57