【发布时间】:2014-01-31 11:48:18
【问题描述】:
我有一个方法,我要为其编写单元测试。方法的简化版:
public static bool IsUpdateAvailable()
{
Version installedVersion = Util.GetInstalledVersionFromRegistry();
Version availableVersion = Util.GetAvailableVersionFromRemote();
bool isRemoteVersionNewer = IsVersionNewer(installedVersion, availableVersion);
return isRemoteVersionNewer;
}
所以问题是让两个局部变量(installedVersion、availableVersion)不是从真实来源(在本例中来自注册表和互联网)而是从某种虚假来源读取它们的值。我无法修改上述方法。而且我试图了解如何通过使用例如 Moq 或 Microsoft Fakes 来模拟这两个变量。我确实在互联网上进行了搜索,但找不到一些相关的示例代码。 那么如何模拟上述方法的局部变量并测试该方法呢?
【问题讨论】:
-
Util.GetInstalledVersionFromRegistry() 是否位于与您正在测试的类不同的命名空间中?
-
@Jimmy 是的 Util.GetInstalledVersionFromRegistry() 在不同的命名空间中
-
放弃我的要求,如果不更改一些代码就无法模拟它,请检查我的答案。
-
我认为“模拟静态方法”可能是一个更合适的标题。
标签: c# .net unit-testing moq microsoft-fakes