【发布时间】:2017-11-09 09:14:27
【问题描述】:
您好,我有以下接口及其实现。现在,我想对Send() 方法进行单元测试,该方法实际上会将消息推送到队列中。
由于我是 MoQ 的新手,不知道如何完成它。
public interface IAdapter
{
IChannel UseQueue(QueueDetail queueDetail);
}
public interface IChannel
{
void Send(string key, byte[] message);
}
public class AdapternServiceBus : IAdapter
{
readonly IConnection connection;
readonly IModel channel;
public AdapternServiceBus(IConnection connection, IModel channel)
{
this.connection = connection;
this.channel = channel;
}
public IChannel BindAndUseQueue(QueueDetail queueDetail)
{
// Logic of creating and binding queue
return new ServiceBusChannel(this, queueDetail.QueueName);
}
public IModel GetChannel()
{
return channel;
}
}
public class ServiceBusChannel : IChannel
{
readonly string containerName;
IModel channel;
public ServiceBusChannel(AdapternServiceBus adapter, string containerName)
{
this.containerName = containerName;
channel = adapter.GetChannel();
}
public void Send(string key, byte[] message)
{
// Publish the message
channel.BasicPublish(exchangeName, key, null, message);
}
}
在这里通过工厂,我们决定需要连接哪种类型的框架,在工厂内,我们打开一个传递给下一个类的连接,以便可以使用它来创建和绑定队列。
IChannel 的实现是主类,将用于与队列和主题进行实际对话。
【问题讨论】:
-
你看过Moq的快速入门github.com/Moq/moq4/wiki/Quickstart
标签: c# unit-testing moq