[英]return values of native types of unstubbed invocations
我有一些@Mock對象,但未指定在該對象上調用方法的返回值。 該方法返回int(不是Integer)。 我很驚訝地看到Mockito沒有拋出NPE並返回0。這是預期的行為嗎?
例如:
class Foo {
public int getInt() {
return 1;
}
}
@Mock
private Foo foo;
@InjectMock
private ClassToTest classToTest;
@Test
public void doTest() {
int a = classToTest.callFoo(); // which calls foo.getInt()
Assert.AssertEquals(a, 0); // true
}
根據文檔 :
默認情況下,對於所有返回值的方法,mock返回null,空集合或適當的原始/原始包裝器值(例如:0,false,... int / Integer,boolean / Boolean等)。
是的,這是預期的行為。 您還可以使用以下方法覆蓋默認存根:
@Test
public void doTest() {
Mockito.when(foo.getInt()).thenReturn(15);
int a = classToTest.callFoo(); // which calls foo.getInt()
//Assert.assertEquals(a, 0); // NO LONGER TRUE
Assert.assertEquals(a, 15);
}
是。 對於返回原始數據類型的方法,Mockito返回默認值(根據類型為false
或0
)。 Java AutoBoxing負責這些原語及其對象化等價物之間的任何轉換(例如,布爾值到布爾值)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.