如何伪造/单元测试 Azure 存储队列?

how to fake / unit test Azure Storage Queue?

我正在尝试找到一种方法来测试我拥有的一些代码,这些代码将查询 azure 存储队列。现在,我被要求创建我自己的本地内存队列 class 来模拟上游 Azure 队列。 此时,我正在尝试查看是否可以在假队列中创建示例消息,以便我的 class 的被调用者有一些数据可以使用。

所以我正在尝试做这样的事情:

using Azure.Storage.Queues.Models;
namespace Widgets.Tests.Queues
{
    public class InMemoryAzureMessageQueue : IAzureQueueClient
    {
        public string DequeueMessage(QueueMessage message)
        {
            throw new System.NotImplementedException();
        }

        public QueueMessage[] GetMessages()
        {
           //pseudocode
           QueueMessage qm = new QueueMessage();
           QueueMessage[] listqm = new QueueMessage[];
           qm.messageID = xxx;
           qm.messageBody = "hello";

           listqm.add(qm);
           return listqm;

        }

        public bool HasMesssages()
        {
            return true; 
        }
    }
 }

当我尝试创建“qm”时,收到以下错误消息: 'QueueMessage' 不包含采用 0 个参数的构造函数

到目前为止我尝试过的内容:

我试图在单击 QueueMessage 时“转到定义”,只是为了查看构造函数的外观。但是当我这样做时,我收到一条错误消息,提示未找到定义。

class 的描述是这样说的:

The object returned in the QueueMessageList array when calling Get Messages on a Queue.

也许我不能像这样创建一条消息?

我对 .NET 和 Azure 的所有方面都很陌生。 如有任何提示,我们将不胜感激。

QueueMessage class does not contain an accessible constructor. You can however build a message using the QueuesModelFactory,专为模拟这些消息而设计:

public QueueMessage[] GetMessages()
{
    QueueMessage qm = QueuesModelFactory.QueueMessage(
        messageId: "xxx",
        popReceipt: "",
        messageText: "hello",
        dequeueCount: 0);
    QueueMessage[] listqm = new QueueMessage[1];

    listqm[0] = qm;
    return listqm;
}