gpt4 book ai didi

c# - 在 C# 中模拟局部变量

转载 作者:行者123 更新时间:2023-11-30 13:57:22 27 4
gpt4 key购买 nike

我有一个要为其编写单元测试的方法。简化版方法:

public static bool IsUpdateAvailable()
{
Version installedVersion = Util.GetInstalledVersionFromRegistry();
Version availableVersion = Util.GetAvailableVersionFromRemote();

bool isRemoteVersionNewer = IsVersionNewer(installedVersion, availableVersion);

return isRemoteVersionNewer;
}

所以问题是让两个局部变量(installedVersion、availableVersion)不是从真实来源(在本例中是从注册表和互联网)而是从某种虚假来源读取它们的值。我无法修改上述方法。我正在尝试了解如何通过使用 Moq 或 Microsoft Fakes 来模拟这两个变量。我确实在互联网上进行了搜索,但无法找到一些相关的示例代码。那么我如何模拟上述方法的局部变量并测试该方法呢?

最佳答案

每个静态和硬编码的依赖项都是同样的问题。尽量避免静电,并首先将其分类为。为将某些内容标记为静态而不是因为 R# 告诉你这样提出真正的论据。

如何通过依赖注入(inject)来解决这个问题。您必须通过参数注入(inject)依赖项以使其可测试。

ctor(Version installedVersion, Version availableVersion) {
// Maybe store them in private fields.
}

public bool IsUpdateAvailable()
{
bool isRemoteVersionNewer = IsVersionNewer(installedVersion, availableVersion);

return isRemoteVersionNewer;
}

我想您现在明白了,您不必模拟变量本身。您可以使用不同的输入创建对象的不同实例。一种使用您的 Util. 方法构建对象,另一种使用单元测试的测试数据构建对象。

关于c# - 在 C# 中模拟局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21479368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com