mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-07-02 19:42:58 +00:00
feat: Simplify integration test setup (#70)
This commit is contained in:
commit
99ee108b04
@ -21,9 +21,7 @@ public class TestFixtureBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void RegisterCustomServicesHandler(
|
protected virtual void RegisterCustomServicesHandler(
|
||||||
IServiceCollection services,
|
IServiceCollection services)
|
||||||
ServiceProvider serviceProvider,
|
|
||||||
IServiceProvider scopedServices)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,9 +13,7 @@ namespace CleanArchitecture.IntegrationTests.Infrastructure;
|
|||||||
public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFactory<Program>
|
public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFactory<Program>
|
||||||
{
|
{
|
||||||
public delegate void RegisterCustomServicesHandler(
|
public delegate void RegisterCustomServicesHandler(
|
||||||
IServiceCollection services,
|
IServiceCollection services);
|
||||||
ServiceProvider serviceProvider,
|
|
||||||
IServiceProvider scopedServices);
|
|
||||||
|
|
||||||
private readonly bool _addTestAuthentication;
|
private readonly bool _addTestAuthentication;
|
||||||
private readonly RegisterCustomServicesHandler? _registerCustomServicesHandler;
|
private readonly RegisterCustomServicesHandler? _registerCustomServicesHandler;
|
||||||
@ -31,31 +29,14 @@ public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFacto
|
|||||||
protected override void ConfigureWebHost(IWebHostBuilder builder)
|
protected override void ConfigureWebHost(IWebHostBuilder builder)
|
||||||
{
|
{
|
||||||
builder.UseEnvironment("Integration");
|
builder.UseEnvironment("Integration");
|
||||||
|
|
||||||
base.ConfigureWebHost(builder);
|
base.ConfigureWebHost(builder);
|
||||||
|
|
||||||
var configuration = new ConfigurationBuilder()
|
var redisPort = GlobalSetupFixture.RedisContainer.GetMappedPublicPort(Configuration.RedisPort);
|
||||||
.Build();
|
var rabbitPort = GlobalSetupFixture.RabbitContainer.GetMappedPublicPort(Configuration.RabbitMqPort);
|
||||||
|
|
||||||
builder.ConfigureAppConfiguration(configurationBuilder =>
|
Environment.SetEnvironmentVariable("ConnectionStrings:DefaultConnection", GlobalSetupFixture.DatabaseConnectionString);
|
||||||
{
|
Environment.SetEnvironmentVariable("RedisHostName", $"localhost:{redisPort}");
|
||||||
var redisPort = GlobalSetupFixture.RedisContainer.GetMappedPublicPort(Configuration.RedisPort);
|
Environment.SetEnvironmentVariable("RabbitMQ:Port", rabbitPort.ToString());
|
||||||
var rabbitPort = GlobalSetupFixture.RabbitContainer.GetMappedPublicPort(Configuration.RabbitMqPort);
|
|
||||||
|
|
||||||
configurationBuilder.AddInMemoryCollection([
|
|
||||||
new KeyValuePair<string, string?>(
|
|
||||||
"ConnectionStrings:DefaultConnection",
|
|
||||||
GlobalSetupFixture.DatabaseConnectionString),
|
|
||||||
new KeyValuePair<string, string?>(
|
|
||||||
"RedisHostName",
|
|
||||||
$"localhost:{redisPort}"),
|
|
||||||
new KeyValuePair<string, string?>(
|
|
||||||
"RabbitMQ:Port",
|
|
||||||
rabbitPort.ToString())
|
|
||||||
]);
|
|
||||||
|
|
||||||
configuration = configurationBuilder.Build();
|
|
||||||
});
|
|
||||||
|
|
||||||
builder.ConfigureServices(services =>
|
builder.ConfigureServices(services =>
|
||||||
{
|
{
|
||||||
@ -68,24 +49,7 @@ public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFacto
|
|||||||
}).AddTestAuthentication(_ => { });
|
}).AddTestAuthentication(_ => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
var sp = services.BuildServiceProvider();
|
_registerCustomServicesHandler?.Invoke(services);
|
||||||
|
|
||||||
using var scope = sp.CreateScope();
|
|
||||||
var scopedServices = scope.ServiceProvider;
|
|
||||||
|
|
||||||
// Readd rabbitmq options to use the correct port
|
|
||||||
var rabbitMq = new RabbitMqConfiguration();
|
|
||||||
configuration.Bind("RabbitMQ", rabbitMq);
|
|
||||||
services.AddSingleton(rabbitMq);
|
|
||||||
|
|
||||||
// Readd IDistributedCache to replace the memory cache with redis
|
|
||||||
services.AddStackExchangeRedisCache(options =>
|
|
||||||
{
|
|
||||||
options.Configuration = configuration["RedisHostName"];
|
|
||||||
options.InstanceName = "clean-architecture";
|
|
||||||
});
|
|
||||||
|
|
||||||
_registerCustomServicesHandler?.Invoke(services, sp, scopedServices);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user