我有下一个方法,注意我在做new ServiceBusClient(connectionString)
,我想我可以模拟这个,所以它会抛出一个desire异常。我正在使用NSubstitute,但我不知道该怎么做。
public void Connect()
{
try
{
client = new ServiceBusClient(connectionString);
}
catch (Exception exception)
{
switch (exception)
{
case FormatException _:
logger.LogError(new ConnectionStringFormatError(connectionString));
break;
case ServiceBusException _:
logger.LogError(new ConnectionError(exception.Message));
break;
}
}
}
ServiceBusClient的构造函数有参数,所以我不能模拟类本身。有什么方法可以得到这个吗?
1条答案
按热度按时间xj3cbfub1#
为了使代码可测试,并模拟
ServiceBusClient
,不应该直接在代码中使用它,而应该通过抽象。所以首先创建工厂的抽象,这将为您创建服务总线客户机。就像这样:
然后你需要实现这个抽象。这个抽象的实现将创建
ServiceBusClient
的示例然后,您的客户端代码将使用
IServiceBusClientFactory
接口,您可以在单元测试中任意模拟它。当然,这需要使用IoC-然后您将受益于抽象的使用。