kafka-aspnet

Форк
0
/
TestServer.cs 
73 строки · 2.6 Кб
1
using System.Linq;
2
using AspNetCore.Kafka;
3
using AspNetCore.Kafka.Abstractions;
4
using AspNetCore.Kafka.Mock;
5
using AspNetCore.Kafka.Mock.Abstractions;
6
using Microsoft.AspNetCore.Builder;
7
using Microsoft.AspNetCore.Hosting;
8
using Microsoft.AspNetCore.Mvc.Testing;
9
using Microsoft.AspNetCore.TestHost;
10
using Microsoft.Extensions.Configuration;
11
using Microsoft.Extensions.DependencyInjection;
12
using Microsoft.Extensions.Hosting;
13
using Microsoft.Extensions.Logging;
14
using Tests.Mock;
15
using Xunit.Abstractions;
16
using ConfigurationBuilder = Microsoft.Extensions.Configuration.ConfigurationBuilder;
17

18
namespace Tests
19
{
20
    public class TestServer : WebApplicationFactory<Startup>
21
    {
22
        public ITestOutputHelper Output { get; private set; }
23

24
        public TestServer SetOutput(ITestOutputHelper output)
25
        {
26
            Output = output;
27
            return this;
28
        }
29
        
30
        protected override IHostBuilder CreateHostBuilder() => Host.CreateDefaultBuilder();
31
        
32
        protected override void ConfigureWebHost(IWebHostBuilder builder)
33
        {
34
            var config = new ConfigurationBuilder()
35
                .AddEnvironmentVariables()
36
                .Build();
37
            
38
            builder
39
                .UseEnvironment("test")
40
                .UseStartup<Startup>()
41
                .ConfigureServices(services =>
42
                {
43
                    services
44
                        .AddSingleton(Output)
45
                        .AddSingleton(typeof(ILogger<>), typeof(TestLogger<>))
46
                        .AddKafka(config)
47
                        .AddInterceptor<TestInterceptor>()
48
                        .UseInMemoryBroker();
49
                })
50
                .ConfigureTestServices(services =>
51
                {
52
                    services
53
                        .AddTransient(typeof(ILogger<>), typeof(TestLogger<>));
54
                });
55
        }
56

57
        protected IKafkaProducer Producer => GetRequiredService<IKafkaProducer>();
58
        protected IKafkaConsumer Consumer => GetRequiredService<IKafkaConsumer>();
59
        protected IKafkaMemoryBroker Broker => GetRequiredService<IKafkaMemoryBroker>();
60
        protected ISubscriptionManager Manager => GetRequiredService<ISubscriptionManager>();
61

62
        public TestInterceptor Interceptor =>
63
            Services.GetServices<IMessageInterceptor>().Cast<TestInterceptor>().First();
64
        
65
        protected T GetRequiredService<T>() => Services.GetRequiredService<T>();
66
    }
67

68
    public class Startup
69
    {
70
        public void ConfigureServices(IServiceCollection services) { }
71
        public void Configure(IApplicationBuilder app) { }
72
    }
73
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.