gpt4 book ai didi

tdd - 关于如何 TDD 应用程序需要从系统环境中检索用户名的想法

转载 作者:行者123 更新时间:2023-12-02 07:51:49 26 4
gpt4 key购买 nike

您通常如何处理需要访问操作系统系统变量的应用程序的 TDD 方面?

例如,我的应用程序需要能够正确检索操作系统当前登录的用户名。

所以我 TDD 一个函数来做这个,它叫做:

string getUserNameFromSystemEnvironment();

我遇到的问题是:

我在我的机器上运行测试,所以我知道用户名是什么(比如 FooBar)。我通过在我的测试中对 FooBar 进行硬编码来 TDD getUserNameFromSystemEnvironment()

EXPECT_EQ(getUserNameFromSystemEnvironment(), "FooBar");

很明显,这个测试在我的机器上运行良好,但在其他机器上运行不正常。让它在
上正常运行然而,对于其他人,我需要使用 getUserNameFromSystemEnvironment()。但是,这种做法违背了测试的目的,因为我们将拥有:

EXPECT_EQ(getUserNameFromSystemEnvironment(), 
getUserNameFromSystemEnvironment());

有什么想法吗?

最佳答案

如果你想检查这个,你需要设置一个模拟。创建一个返回用户 ID 的接口(interface),一个调用 getUserNameFromSystemEnvironment() 的实现,以及一个返回您告诉它返回的任何字符串的模拟。

但这并不是您真正想要做的。如果您尝试测试 getUserNameFromSystemEnvironment(),那么您实际上是在测试操作系统功能。您不需要测试其他人的代码。相反,将 getUserNameFromSystemEnvironment() 放入一个接口(interface)中,并为系统的其他部分模拟它。然后,例如,要测试 LoginValidator,传入一个将 usename 返回为“Foobar”的模拟,并验证它是否验证了登录。然后添加一个测试,返回一个不应该验证的用户名,并验证它不允许它进入。

关于tdd - 关于如何 TDD 应用程序需要从系统环境中检索用户名的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408713/

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