我正在尝试设置一个测试来获取我的所有产品,但我得到了 ArgumentNullException
但我不明白为什么,我最近开始研究这个所以......
这是错误消息
Message: System.ArgumentNullException : Value cannot be null.
Parameter name: 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);
}
提前致谢!
最佳答案
Message: System.ArgumentNullException : Value cannot be null. Parameter name: 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();
}
关于c# - xUnit TestServer MVC 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175709/