This refactor of integration test logic is to boost its reusability. Moving some functionality to attributes & customization classes means I can reuse elsewhere without duplication.
23 lines
834 B
C#
23 lines
834 B
C#
using System;
|
|
using AutoFixture.Kernel;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace Elsa.Testing.Shared.AutoFixture.SpecimenBuilders
|
|
{
|
|
public class HostBubilderUsingServicesSpecimenBuilder : ISpecimenBuilder
|
|
{
|
|
readonly Action<IServiceCollection> serviceConfig;
|
|
|
|
public object Create(object request, ISpecimenContext context)
|
|
=> request.IsAnAutofixtureRequestForType<IHostBuilder>()? GetHostBuilder() : new NoSpecimen();
|
|
|
|
IHostBuilder GetHostBuilder()
|
|
=> Host.CreateDefaultBuilder().ConfigureServices((hostBuilder, services) => serviceConfig(services));
|
|
|
|
public HostBubilderUsingServicesSpecimenBuilder(Action<IServiceCollection> serviceConfig)
|
|
{
|
|
this.serviceConfig = serviceConfig;
|
|
}
|
|
}
|
|
} |