如何伪造/单元测试 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;
}
我正在尝试找到一种方法来测试我拥有的一些代码,这些代码将查询 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;
}