public async Task StartAsync_should_process_pending_messages() { var processor = NSubstitute.Substitute.For <IOutboxProcessor>(); var sp = NSubstitute.Substitute.For <IServiceProvider>(); sp.GetService(typeof(IOutboxProcessor)) .Returns(processor); var scope = NSubstitute.Substitute.For <IServiceScope>(); scope.ServiceProvider.Returns(sp); var factory = NSubstitute.Substitute.For <IServiceScopeFactory>(); factory.CreateScope().Returns(scope); var logger = NSubstitute.Substitute.For <ILogger <OutboxBackgroundService> >(); var sut = new OutboxBackgroundService(factory, OutboxProcessorOptions.Default, logger); var tokenSource = new CancellationTokenSource(); await sut.StartAsync(tokenSource.Token); await Task.Delay(200); await processor.Received() .ProcessPendingMessagesAsync(Arg.Any <CancellationToken>()); }
public async Task StartAsync_should_start_subscribers() { var cleaner = NSubstitute.Substitute.For<IOutboxProcessor>(); var sp = NSubstitute.Substitute.For<IServiceProvider>(); sp.GetService(typeof(IOutboxProcessor)) .Returns(cleaner); var scope = NSubstitute.Substitute.For<IServiceScope>(); scope.ServiceProvider.Returns(sp); var factory = NSubstitute.Substitute.For<IServiceScopeFactory>(); factory.CreateScope().Returns(scope); var sut = new OutboxBackgroundService(factory, OutboxProcessorOptions.Default); var tokenSource = new CancellationTokenSource(); await sut.StartAsync(tokenSource.Token); await cleaner.Received(1) .ProcessPendingMessagesAsync(Arg.Any<CancellationToken>()); }