xUnit TestServer MVC核心

时间:2018-07-04 14:11:39

标签: c# testing asp.net-core xunit fact

我正在尝试获取所有产品的测试,但是我正在获取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);
}

谢谢!

1 个答案:

答案 0 :(得分:2)

  

消息: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();
    }