簡體   English   中英

返回未存根調用的本機類型的值

[英]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返回默認值(根據類型為false0 )。 Java AutoBoxing負責這些原語及其對象化等價物之間的任何轉換(例如,布爾值到布爾值)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM