profile
viewpoint

Ask questionsMigrate Asp.Net Core 2.2 Integration Tests to 3.0 - The TestServer constructor was not called with a IWebHostBuilder so IWebHost is not available.

We had basic Api integration tests setup as following. When trying to update to 3.0 I get the following error.

System.InvalidOperationException : The TestServer constructor was not called with a IWebHostBuilder so IWebHost is not available.

How to convert to support 3.0?

public class MainAPITests : BaseAPITests
{
	public MainAPITests(WebApplicationFactory<Startup> factory) : base(factory)
	{
	}

	// tests here
}

public class BaseAPITests : IClassFixture<WebApplicationFactory<Startup>>
{
	public HttpClient Client { get; }
	public TestServer Server { get; }

	public BaseAPITests(WebApplicationFactory<Startup> factory)
	{
		// ensure we use "Test" environment
		factory = factory.WithWebHostBuilder(builder => builder.UseStartup<Startup>().UseEnvironment("Test"));

		Client = factory.CreateDefaultClient();
		Server = factory.Server;

		// get context from startup where we check if test or not and use in memory
		var catalogDB = Server.Host.Services.GetService<CatalogDbContext>();

		// handle additional details
	}
}
aspnet/AspNetCore

Answer questions javiercn

@aherrick Thanks for contacting us.

Instead of doing factory.Server.Services you can simply do factory.Services. The error you are seeing is likely due to the move to generic host. The Services property will do the right thing.

If that doesn't work, let us know.

useful!
source:https://uonfu.com/
Github User Rank List