簡體   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