Art*_*ius 3 .net c# unit-testing moq microsoft-fakes
我有一个方法,我将编写单元测试.方法的简化版本:
public static bool IsUpdateAvailable()
{
Version installedVersion = Util.GetInstalledVersionFromRegistry();
Version availableVersion = Util.GetAvailableVersionFromRemote();
bool isRemoteVersionNewer = IsVersionNewer(installedVersion, availableVersion);
return isRemoteVersionNewer;
}
Run Code Online (Sandbox Code Playgroud)
所以问题是让两个局部变量(installedVersion,availableVersion)读取它们的值不是来自真实来源(在这种情况下来自注册表和互联网),而是来自某种虚假来源.我无法修改上述方法.我试图了解如何通过使用例如Moq或Microsoft Fakes来模拟这两个变量.我确实在互联网上搜索,但无法找到一些相关的示例代码.那么如何模拟上述方法的局部变量并测试该方法呢?
每个静态和硬编码依赖项都存在同样的问题.尽量避免静电的地方,你可以和分类就坏在首位.开发真实的论据来标记某些东西是静态的,而不是因为R#告诉你的.
如何解决这个问题是通过依赖注入.您必须通过参数注入依赖项以使其可测试.
ctor(Version installedVersion, Version availableVersion) {
// Maybe store them in private fields.
}
public bool IsUpdateAvailable()
{
bool isRemoteVersionNewer = IsVersionNewer(installedVersion, availableVersion);
return isRemoteVersionNewer;
}
Run Code Online (Sandbox Code Playgroud)
我想你现在看到,你不必自己模拟变量.您可以使用不同的输入创建对象的不同实例.一个使用您的Util.方法构造对象,另一个使用测试数据构建单元测试.
| 归档时间: |
|
| 查看次数: |
2417 次 |
| 最近记录: |