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

dot*_*dot 0 c# unit-testing azure azure-storage azure-storage-queues

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

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

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; 
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

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

到目前为止我尝试过的:

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

该类的描述是这样说的:

The object returned in the QueueMessageList array when calling Get Messages on a Queue.
Run Code Online (Sandbox Code Playgroud)

也许我不能只创建这样的消息?

我对 .NET 和 Azure 的所有事物都很陌生。任何提示将不胜感激。

dev*_*ull 6

该类QueueMessage不包含可访问的构造函数。但是,您可以使用 构建消息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;
}
Run Code Online (Sandbox Code Playgroud)