C#如何对调用具有外部依赖性的静态方法的方法进行单元测试?

时间:2017-07-10 05:54:35

标签: c# unit-testing azure

我有一个如下方法,它使用NamaspaceManager类的静态方法。

public long GetCount(string name)
{
    var namespaceManager = NamespaceManager.CreateFromConnectionString(this.queueConfig.ConnectionString);
    return namespaceManager.GetQueue(name).MessageCountDetails.ActiveMessageCount;
}

由于该函数对NamespaceManager类具有硬依赖性,因此在单元挖掘期间,它希望我提供有效的连接字符串。此外,我对NuGet包附带的 NamespaceManager 类没有任何控制权。我如何重构它以使其可单元测试?

1 个答案:

答案 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;
}