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