public void TestQueueReaderWithMockMsmqWithNoConsumer() { var actualMessage = new Message1 { CorrelationId = "f3e608d4-96cf-4093-9923-91b13f4b7555" }; var messageQueueMock = new Mock <IMessageQueue>(); var messageMock = new MessageQueueMessageWrapper(new Message { Body = actualMessage }); messageQueueMock.Setup(m => m.EndReceive(It.IsAny <IAsyncResult>())).Returns(messageMock); var beginReceiveCalled = false; messageQueueMock.Setup(m => m.BeginReceive(It.IsAny <TimeSpan>())) .Callback( () => { if (beginReceiveCalled) { throw CreateMessageQueueException(); } beginReceiveCalled = true; messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body); receiverReader.Start(); messageQueueMock.Verify(m => m.BeginReceive(It.IsAny <TimeSpan>()), Times.Exactly(1)); }
public void TestQueueReaderWithMockMsmqEndReceiveOneRetry() { var actualMessage = new Message1 { CorrelationId = "f3e608d4-96cf-4093-9923-91b13f4b7555" }; var messageQueueMock = new Mock <IMessageQueue>(); var messageMock = new MessageQueueMessageWrapper(new Message { Body = actualMessage }); var throwCount = 0; messageQueueMock .Setup(m => m.EndReceive(It.IsAny <IAsyncResult>())) .Returns(() => messageMock) .Callback(() => { throwCount++; if (throwCount == 2) { throw CreateMessageQueueException((int)MessageQueueErrorCode.IOTimeout); } messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); bool beginReceiveCalled = false; messageQueueMock.Setup(m => m.BeginReceive(It.IsAny <TimeSpan>())) .Callback( () => { if (beginReceiveCalled) { throw CreateMessageQueueException(); } beginReceiveCalled = true; messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); Message1 message = null; using (var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body)) { receiverReader.AttachConsumer(new ActionConsumer <Message1>(m => { message = m; receiverReader.Dispose(); })); receiverReader.Start(); Assert.IsNotNull(message); Assert.AreEqual("f3e608d4-96cf-4093-9923-91b13f4b7555", message.CorrelationId); messageQueueMock.Verify(m => m.BeginReceive(It.IsAny <TimeSpan>()), Times.Exactly(2)); } }