[英]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.