kafka-aspnet
73 строки · 2.6 Кб
1using System.Linq;2using AspNetCore.Kafka;3using AspNetCore.Kafka.Abstractions;4using AspNetCore.Kafka.Mock;5using AspNetCore.Kafka.Mock.Abstractions;6using Microsoft.AspNetCore.Builder;7using Microsoft.AspNetCore.Hosting;8using Microsoft.AspNetCore.Mvc.Testing;9using Microsoft.AspNetCore.TestHost;10using Microsoft.Extensions.Configuration;11using Microsoft.Extensions.DependencyInjection;12using Microsoft.Extensions.Hosting;13using Microsoft.Extensions.Logging;14using Tests.Mock;15using Xunit.Abstractions;16using ConfigurationBuilder = Microsoft.Extensions.Configuration.ConfigurationBuilder;17
18namespace Tests19{
20public class TestServer : WebApplicationFactory<Startup>21{22public ITestOutputHelper Output { get; private set; }23
24public TestServer SetOutput(ITestOutputHelper output)25{26Output = output;27return this;28}29
30protected override IHostBuilder CreateHostBuilder() => Host.CreateDefaultBuilder();31
32protected override void ConfigureWebHost(IWebHostBuilder builder)33{34var config = new ConfigurationBuilder()35.AddEnvironmentVariables()36.Build();37
38builder
39.UseEnvironment("test")40.UseStartup<Startup>()41.ConfigureServices(services =>42{43services
44.AddSingleton(Output)45.AddSingleton(typeof(ILogger<>), typeof(TestLogger<>))46.AddKafka(config)47.AddInterceptor<TestInterceptor>()48.UseInMemoryBroker();49})50.ConfigureTestServices(services =>51{52services
53.AddTransient(typeof(ILogger<>), typeof(TestLogger<>));54});55}56
57protected IKafkaProducer Producer => GetRequiredService<IKafkaProducer>();58protected IKafkaConsumer Consumer => GetRequiredService<IKafkaConsumer>();59protected IKafkaMemoryBroker Broker => GetRequiredService<IKafkaMemoryBroker>();60protected ISubscriptionManager Manager => GetRequiredService<ISubscriptionManager>();61
62public TestInterceptor Interceptor =>63Services.GetServices<IMessageInterceptor>().Cast<TestInterceptor>().First();64
65protected T GetRequiredService<T>() => Services.GetRequiredService<T>();66}67
68public class Startup69{70public void ConfigureServices(IServiceCollection services) { }71public void Configure(IApplicationBuilder app) { }72}73}