簡體   English   中英

Mockito:如何在不模仿所有參數的情況下輕松存根方法

[英]Mockito: How to easily stub a method without mocking all parameters

我有一個方法我想要存根但它有很多參數。 我怎樣才能避免模擬所有參數但仍然存根方法。

例如:

//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);

我不太關注你使用Mockito的問題。 假設您創建了包含myMethod()方法的接口的模擬,則可以僅驗證您感興趣的方法的參數。例如(假設接口名為MyInterface並使用JUnit 4):

@Test
public void test() {
    MyInterface myInterface = mock(MyInterface.class);
    FooBar expectedFooBar = new FooBar();        

    // other testing stuff

    verify(myInterface).myMethod(any(), any(), eq(expectedFooBar), any(), ...);
}

您需要對Mockito方法進行靜態導入才能使其正常工作。 any()匹配器不關心驗證時傳遞的值。

你不能避免為你的方法中的每個參數傳遞一些東西(即使它只是NULL)。

使用mockito.any

如果myobj mymethod接受字符串,字符串,條形碼等

打斷電話

Mockito.when(myojb.myMethod(Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)))
    .thenReturn(amockedobject);

驗證SteveD已經給出了答案

Mockito.verify(myojb).myMethod(
    Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)));

創建一個包裝類,它調用真實方法並填充所有參數,但是你提供的參數(也就是“委托”)。

在下一次機會中,針對項目提出錯誤,要求將參數移動到配置對象。

暫無
暫無

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

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