谁能解释一下我们在哪种情况下使用 PowerMockito.when() 和 PowerMockito.doReturn()

Can any one explain in which case we use PowerMockito.when() and PowerMockito.doReturn()

我正在为我的服务编写测试用例 class,但我不确定何时使用 PowerMockito.when()PowerMockito.doReturn(),因为这两种行为看起来与我相似。

根据我的理解,doReturn() 和 when() 几乎相等,但我在 when() type-checking 中发现的差异是您在编译时返回的值,其中 在 doReturn() 中没有 type-checking 你在编译时返回的值

例如:

案例 1:

PowerMockito.when(mongoTamplate.getCollection(Mockito.eq("testdoc"))).thenReturn(mongoCollection);

案例2:

powerMockito.doReturn(mongoCollection).when(mongoTamplate).getCollection(Mockito.eq("test-doc"))

如果在编译时检查了 case 1 类型的 mongoCollection,而在 case2 中没有在编译时检查类型 mongoCollection