public async Task GetNext_GetsGoodMessage()
        {
            var messageClass = typeof(TestSagaMessage1).FullName + ", " + typeof(TestSagaMessage1).Assembly.GetName().Name;

            var expectedQueueMessage = new QueueMessage
            {
                Headers = "{ \"MessageClass\":\"" + messageClass + "\"}"
            };

            var expectedHeaders = new Headers
            {
                MessageClass     = messageClass,
                ExceptionDetails = null
            };

            var expectedUserMessage = new TestSagaMessage1();

            dataAccess.Setup(d => d.GetPendingQueued("SourceQueue"))
            .Returns(Task.FromResult(expectedQueueMessage));

            serializer.Setup(s => s.DeserializeHeaders(It.IsAny <string>()))
            .Returns(expectedHeaders);

            serializer.Setup(s => s.DeserializeMessage(It.IsAny <string>(), typeof(TestSagaMessage1)))
            .Returns(expectedUserMessage);

            var message = await reader.GetNext("SourceQueue");

            Assert.IsTrue(ReferenceEquals(expectedQueueMessage, message.MessageData));
            Assert.IsTrue(ReferenceEquals(expectedHeaders, message.Headers));
            Assert.IsTrue(ReferenceEquals(expectedUserMessage, message.Message));
            Assert.AreEqual("SourceQueue", message.SourceQueue);
        }