public async Task ShouldReceiveMessages(
                [Frozen] IRequestMessageRelay relay,
                [Target] DefaultRequestWorker worker,
                CancellationToken cancellationToken
                )
            {
                await worker.Run(cancellationToken);

                await relay.Received().Receive(Is(cancellationToken));
            }
            public async Task ShouldRespondToTheRequest(
                string response,
                RequestMessage request,
                [Frozen] HttpStatusCode statusCode,
                [Frozen] HttpResponseMessage httpResponse,
                [Frozen, Substitute] HttpMessageInvoker client,
                [Frozen, Substitute] IRequestMessageRelay relay,
                [Target] DefaultRequestInvoker invoker,
                CancellationToken cancellationToken
                )
            {
                httpResponse.Content   = new StringContent(response);
                request.RequestDetails = new Request(ChannelEndpoint.CreateMessage)
                {
                    RequestBody = null
                };
                await invoker.Invoke(request, cancellationToken);

                await client.Received().SendAsync(Any <HttpRequestMessage>(), Is(cancellationToken));

                await relay.Received().Respond(Is(request), Is(statusCode), Is(response), Is(cancellationToken));
            }
            public async Task ShouldFailRequestIfExceptionWasThrown(
                string response,
                RequestMessage request,
                [Frozen] HttpStatusCode statusCode,
                [Frozen] HttpResponseMessage httpResponse,
                [Frozen, Substitute] HttpMessageInvoker client,
                [Frozen, Substitute] IRequestMessageRelay relay,
                [Target] DefaultRequestInvoker invoker,
                CancellationToken cancellationToken
                )
            {
                client.SendAsync(Any <HttpRequestMessage>(), Any <CancellationToken>()).Throws <Exception>();
                request.RequestDetails = new Request(ChannelEndpoint.CreateMessage)
                {
                    RequestBody = null
                };

                await invoker.Invoke(request, cancellationToken);

                await client.Received().SendAsync(Any <HttpRequestMessage>(), Is(cancellationToken));

                await relay.Received().Fail(Is(request), Is(0U), Is(cancellationToken));
            }