【发布时间】:2018-07-24 14:49:58
【问题描述】:
我正在为QueueClient 创建mocking。我在ServiceBus class 中有GetQueueClient。我正在使用下面的代码。
using NUnit.Framework;
using Moq;
[TestFixture]
public sealed class FetchingTest
{
private Mock<IServiceBus> mockIServiceBus;
private Mock<QueueClient> queueClient1;
[TestFixtureSetUp]
public void Setup()
{
this.mockIServiceBus = new Mock<IServiceBus>();
this.queueClient1 = new Mock<QueueClient>();
}
[Test]
public void TestPagingUsesCorrectOffsets()
{
this.mockIServiceBus.Setup(p => p.GetQueueClient(Constants.FetcherQueueName)).Returns(queueClient1.Object); // Getting error here
}
}
服务总线类:
using Microsoft.ServiceBus;
public class ServiceBus : IServiceBus
{
private static readonly string ServiceBusConnectionString =
ConfigurationManager.AppSettings[ConnectionStringNames.ServiceBus];
public QueueClient GetQueueClient(string queueName)
{
return QueueClient.CreateFromConnectionString(ServiceBusConnectionString, queueName);
}
}
它抛出一个错误
Parent 没有默认构造函数。默认构造函数 必须明确定义。 System.NotSupportedException
有人可以帮我解决这个问题吗?
【问题讨论】:
-
你应该改用
IQueueClient抽象。 -
@Nkosi 我尝试使用它,但我无法导入所需的库。
-
如果无法访问它,请考虑创建自己的抽象和实现来包装实际客户端
-
刚查了,界面是公开的。为什么你不能访问它
标签: c# unit-testing moq azureservicebus