gpt4 book ai didi

unit-testing - 使用 Moq 验证私有(private)方法的执行

转载 作者:行者123 更新时间:2023-12-01 17:12:40 27 4
gpt4 key购买 nike

我想测试以下逻辑(这显然是我的方法的精简版本):

public void myPublicMethod(params) {

if(some_condition)
privateMethod1();
else
privateMethod2();
}

我模拟了该方法中的所有其他依赖项,并且我已经进行了设置,以便我可以保证 some_condition 为 true。我想要做的是验证我的 privateMethod1() 是否被调用一次,而 privateMethod2() 根本没有被调用。这可能与起订量有关吗?

以下是有关该问题的一些注释:

  • privateMethod1() 和 privateMethod2() 与 myPublicMethod 位于同一类中,因此我无法为此类创建模拟对象。
  • privateMethod1/2 的主体都包含来自包含这些方法和 myPublicMethod 的类的许多依赖项,因此将 privateMethod1/2 分解为它们自己的帮助程序类将非常耗时

有什么想法吗?提前致谢。我愿意接受这是不可能做到的,但我想知道一种或另一种方式。

最佳答案

不要测试私有(private)方法。它们是类的私有(private)实现细节。您应该只测试执行公共(public)方法的结果。只要你的结果符合预期,你就不应该关心结果是如何获得的。

在私有(private)方法上构建测试将导致脆弱的测试,当您重构私有(private)实现时(出于性能或其他原因),这些测试很容易被破坏。

关于unit-testing - 使用 Moq 验证私有(private)方法的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6847463/

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