public async Task Has_expected_number_of_creations_and_disposals_when_singleton() { var dummyMessage = new DummyMessage(); var messageStub = new TransportLevelMessageBuilder() .WithType(nameof(DummyMessage)) .WithData(dummyMessage) .Build(); var messageResult = new MessageResultBuilder() .WithTransportLevelMessage(messageStub) .Build(); var services = new ServiceCollection(); services.AddTransient <Repository>(); services.AddSingleton <IApplicationLifetime, DummyApplicationLifetime>(); services.AddTransient <DummyMessageHandler>(); services.AddLogging(); services.AddConsumer(options => { options.WithBootstrapServers("dummyBootstrapServer"); options.WithGroupId("dummyGroupId"); options.RegisterMessageHandler <DummyMessage, DummyMessageHandler>("dummyTopic", nameof(DummyMessage)); options.WithTopicSubscriberScopeFactory(new TopicSubscriberScopeFactoryStub(new TopicSubscriberScopeStub(messageResult))); }); services.AddSingleton <ScopeSpy>(); var serviceProvider = services.BuildServiceProvider(); var consumer = serviceProvider.GetRequiredService <Consumer>(); ScopeSpy.Reset(); await consumer.ConsumeSingle(CancellationToken.None); await consumer.ConsumeSingle(CancellationToken.None); Assert.Equal(1, ScopeSpy.Created); Assert.Equal(0, ScopeSpy.Disposed); }
public Repository(ScopeSpy scopeSpy) { _scopeSpy = scopeSpy; }
public DummyMessageHandler(ScopeSpy scopeSpy, Repository repository) { _scopeSpy = scopeSpy; _repository = repository; }