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