コード例 #1
0
        public void PublishedMessageIsCopiedOnlyOnceRegardlessOfNumberOfSubscribers()
        {
            // arrange
            var fakeTime = DateTime.UtcNow;

            TimeMachine.FixTo(fakeTime);

            SetUpSubscriberThatDoesNotAuditMessages("test.audit.subscriber1");
            SetUpSubscriberThatDoesNotAuditMessages("test.audit.subscriber2");
            SetUpSubscriberThatDoesNotAuditMessages("test.audit.subscriber3");

            // act
            adapter.Bus.Publish("yo!");

            // assert
            var messages = MsmqTestHelper.GetMessagesFrom(AuditQueueName).ToList();

            Console.WriteLine(string.Join(Environment.NewLine, messages));

            messages.Count.ShouldBe(4);

            var stringMessages = messages.Where(m => m.Messages[0] is string).ToList();

            Assert.That(stringMessages.Count, Is.EqualTo(1), "We should have only one single copy of the published messages!");
        }