繁体   English   中英

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

[英]how to fake / unit test Azure Storage Queue?

我正在尝试找到一种方法来测试我拥有的一些代码,这些代码将查询 azure 存储队列。 目前,我被要求在 memory 队列 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 arguments 的构造函数

到目前为止我尝试过的:

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

class 的描述是这样说的:

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

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

我在 .NET 和 Azure 的所有事情上真的很绿色。 任何提示将不胜感激。

QueueMessage class 不包含可访问的构造函数。 但是,您可以使用为QueuesModelFactory这些消息设计的 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM