我有一个如下方法,它使用NamaspaceManager类的静态方法。
public long GetCount(string name)
{
var namespaceManager = NamespaceManager.CreateFromConnectionString(this.queueConfig.ConnectionString);
return namespaceManager.GetQueue(name).MessageCountDetails.ActiveMessageCount;
}
由于该函数对NamespaceManager类具有硬依赖性,因此在单元挖掘期间,它希望我提供有效的连接字符串。此外,我对NuGet包附带的 NamespaceManager 类没有任何控制权。我如何重构它以使其可单元测试?
答案 0 :(得分:1)
我认为您应该重构您的方法以接受NamespaceManager对象。然后,您可以在测试中创建NamespaceManager对象,将相关的Queue添加到该对象并将其传递给方法。
如果您希望保持现有客户端代码不变,那么您可以检查null并运行现有代码,例如
public long GetCount(string name, NamespaceManager namespaceManager = null)
{
if(namespaceManager == null)
{
namespaceManager = NamespaceManager.CreateFromConnectionString(this.queueConfig.ConnectionString);
}
return namespaceManager.GetQueue(name).MessageCountDetails.ActiveMessageCount;
}