Moq
Example
1
2
var request = new ReceiveMessageRequest();
var msg = await Task<ReceiveMessageResponse>.Factory.FromAsync(queue.BeginReceiveMessage, queue.EndReceiveMessage, request, null);
Test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var receiveMessageAsyncResult = new Mock<IAsyncResult>();
_queue.Setup(x => x.BeginReceiveMessage(It.IsAny<ReceiveMessageRequest>(), It.IsAny<AsyncCallback>(), It.IsAny<object>()))
.Returns(receiveMessageAsyncResult.Object)
.Callback((ReceiveMessageRequest rmr, AsyncCallback cb, object state) =>
{
receiveMessageAsyncResult.Setup(x => x.AsyncState).Returns(state);
cb(receiveMessageAsyncResult.Object);
});
_queue.Setup(x => x.EndReceiveMessage(It.IsAny<IAsyncResult>())).Returns(() =>
{
if (messageCount > 0)
{
throw new MessageNotExistException("No more messages");
}
messageCount++;
return new ReceiveMessageResponse
{
Message = new Message
{
Body = "SGVsbG8gV29ybGQ=", // Hello World
ReceiptHandle = "12345"
}
};
});