xUnit TestServer MVC CORE - PullRequest
       34

xUnit TestServer MVC CORE

0 голосов
/ 04 июля 2018

Я пытаюсь настроить тест для получения всего моего продукта, но я получаю и ArgumentNullException, но я не понимаю, почему, я недавно начал изучать это так ...

Это сообщение об ошибке

Сообщение: System.ArgumentNullException: значение не может быть нулевым.
Имя параметра: 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 голосов
/ 05 июля 2018

Сообщение: System.ArgumentNullException: значение не может быть нулевым. Имя параметра: connectionString

Эта ошибка вызвана тем, что вы не указали Конфигурацию при создании TestServer. В проекте продукта WebHost.CreateDefaultBuilder(args) в Program.cs настроит загрузку Microsoft.Extensions.Configuration.IConfiguration из 'appsettings.json' .

Если вы хотите протестировать с производственным appsettings.json, вы можете попробовать, как показано ниже:

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

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