我的集成测试很简单。我调用创建应用程序 API,然后检查应用程序记录是否正确插入。
这是我的 CustomWebApplicationFactory:
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<Startup>
{
public CustomWebApplicationFactory()
{
Configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile($"appsettings.{CustomEnvironments.IntegrationTests}.json", optional: true)
.AddEnvironmentVariables()
.Build();
Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(Configuration).CreateLogger();
Log.Information("Starting integration tests");
}
protected override IHostBuilder CreateHostBuilder() =>
base.CreateHostBuilder()
.UseEnvironment(CustomEnvironments.IntegrationTests)
.UseSerilog();
}
Run Code Online (Sandbox Code Playgroud)
这是我的 ApplicationControllerTests 类:
public class ApplicationControllerTests : IClassFixture<CustomWebApplicationFactory<Startup>>
{
private readonly HttpClient _client;
private readonly MyDbContext _db;
private readonly CustomWebApplicationFactory<Startup> _factory;
public ApplicationControllerTests(
CustomWebApplicationFactory<Startup> factory)
{
_factory = factory;
_client = factory.CreateClient();
_db = factory.Services.GetRequiredService<MyDbContext>();
}
[Fact]
public async Task …Run Code Online (Sandbox Code Playgroud)