Пример #1
0
    private static ISqsQueue TestQueue(
        IMessageSerializationRegister messageSerializationRegister,
        string queueName,
        Action spy = null)
    {
        var message = new TestJustSayingMessage
        {
            QueueName = queueName,
        };

        var messages = new List <Message>
        {
            new TestMessage {
                Body = messageSerializationRegister.Serialize(message, false)
            },
        };

        var queue = new FakeSqsQueue(async ct =>
        {
            spy?.Invoke();
            await Task.Delay(30, ct);
            return(messages);
        }, queueName);

        return(queue);
    }
        private static ISqsQueue TestQueue(
            IMessageSerializationRegister messageSerializationRegister,
            string queueName,
            Action spy = null)
        {
            async Task <ReceiveMessageResponse> GetMessages()
            {
                spy?.Invoke();
                await Task.Delay(30);

                var message = new TestJustSayingMessage
                {
                    QueueName = queueName,
                };

                var messages = new List <Message>
                {
                    new TestMessage {
                        Body = messageSerializationRegister.Serialize(message, false)
                    },
                };

                return(new ReceiveMessageResponse {
                    Messages = messages
                });
            }

            IAmazonSQS sqsClientMock = Substitute.For <IAmazonSQS>();

            sqsClientMock
            .ReceiveMessageAsync(Arg.Any <ReceiveMessageRequest>(), Arg.Any <CancellationToken>())
            .Returns(_ => GetMessages());

            ISqsQueue sqsQueueMock = Substitute.For <ISqsQueue>();

            sqsQueueMock.Uri.Returns(new Uri("http://test.com"));
            sqsQueueMock.Client.Returns(sqsClientMock);
            sqsQueueMock.QueueName.Returns(queueName);
            sqsQueueMock.Uri.Returns(new Uri("http://foo.com"));

            return(sqsQueueMock);
        }