示例#1
0
        public async Task PublishAsync_MessageChangingBehavior_BehaviorExecuted()
        {
            var behavior = new ChangeMessageBehavior <TestCommandOne>(_ => new[] { new TestCommandTwo(), new TestCommandTwo(), new TestCommandTwo() });

            var publisher = GetPublisher(null, new[] { behavior }, _asyncSubscriber);

            await publisher.PublishAsync(new TestCommandOne());

            await publisher.PublishAsync(new TestCommandTwo());

            _asyncSubscriber.ReceivedMessagesCount.Should().Be(4);
        }
        public async Task Publish_MessageChangingBehavior_BehaviorExecuted()
        {
            var receivedMessages = new List <object>();
            var behavior         = new ChangeMessageBehavior <TestCommandOne>(_ => new TestCommandTwo());
            var serviceProvider  = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .AddSingletonBehavior(behavior)
                .AddDelegateSubscriber((TestCommandTwo message) => receivedMessages.Add(message)));
            var publisher = serviceProvider.GetRequiredService <IPublisher>();

            publisher.Publish(new TestCommandOne());
            await publisher.PublishAsync(new TestCommandOne());

            receivedMessages.Should().HaveCount(2);
            receivedMessages.Should().AllBeOfType <TestCommandTwo>();
        }