在 ASP.Net 6 中,如果尝试自定义 WebApplicationFactory 来集成测试您的应用程序,则可能会遇到异常。这是由于 Microsoft 已经改变了 WebApplicationFactory 的实现方式,导致旧版本的代码无法在新版本中正常工作。下面给出了解决方法。
首先,定义一个新的 WebApplicationFactory 类并覆盖 CreateWebHostBuilder 方法。如果您使用的是 ASP.Net 的默认模板,则代码如下:
public class CustomWebApplicationFactory
然后,在您的测试类中使用上述类来创建主机。例如:
public class MyTests : IClassFixture
public MyTests(CustomWebApplicationFactory factory)
{
_factory = factory;
_client = _factory.CreateClient();
}
[Fact]
public async Task TestEndpoint()
{
var response = await _client.GetAsync("/myendpoint");
response.EnsureSuccessStatusCode();
// ... other test code ...
}
}
这样就可以在 ASP.Net 6 中集成测试您的应用程序,而不会遇到 WebApplicationFactory 抛出异常的问题。