无效法应使用哪种试验替身



我正在为包含以下内容的方法编写一个 JUnit 测试:

if (p.toString().contains("abc")) {
  cCreds(p);
  refMgr();
  p = new Path(Utils.rmvTkn(p.toString()));
}

cCreds(p);refMgr();调用 void 方法。我实际上并没有测试这些方法,但它们确实在我正在测试的方法中被调用,所以我必须以某种方式处理它们。我知道我需要某种测试替身,但我不确定是什么。我认为它没有when().thenReturn();,因为实际上什么都没有返回。

有人可以建议吗?

编辑

我还应该提到,cCreds(p);refMgr();也是私人的。

这里不需要嘲笑。
作为这些方法:

cCreds(p);
refMgr();

成为被测试类的一部分,您不必嘲笑他们。

嘲笑被测类的publicprivate方法不是很自然。
它通常使测试更脆,更不清晰。
Mockito提供了spy概念来实现它,但它应该受到遗留代码的青睐。

在实际实现中,您应该检查的是该方法是否返回或执行预期的副作用。
您不显示方法的整个代码,因此很难给出更具体的指针。


请注意,如果这些方法:

cCreds(p);
refMgr();

依靠需要模拟的其他一些类来隔离受测组件,可以重构代码以提取依赖类中的方法。
您将以这种方式调用它们:

foo.cCreds(p);
bar.refMgr();

你可以很容易地嘲笑他们。

使用 Mockito 中的 doNothing() API 来模拟 void 方法

doNothing().when(mock).cCreds(p);
doNothing().when(mock).refMgr();

来源: http://www.baeldung.com/mockito-void-methods

相关内容

  • 没有找到相关文章

最新更新