2015-12-02 120 views
0

我正在使用Mockito編寫簡單的單元測試。Mockito:將模擬對象作爲參數傳遞給函數(調用函數時)

我有一個功能測試:

public void doSomething() { 
    foo.getStudent(new School()); 
} 

我的測試用例:

@Test 
public void testDoSomething() { 
    Foo mockedFoo = Mockito.mock(Foo.class); 
    School mockedSchool = Mockito.mock(School.class); 
    // I want to pass the mocked school as parameter when food.getStudent(school) is called 
    // how to pass mocked school to method? 
    when(mockedFoo.getStudent(???)) 

    // run the method under test 
    myService.doSomething(); 
} 

我想通過mockedSchool作爲參數時foo.getStudent(school)被調用時,如何在聲明的Mockito這個?

似乎Mockito只有when(...).thenReturn(),但有沒有像when(...).thenPassArgument(mockedObject)

回答

0

問題在於你在doSomething方法中實例化School類的方式;當你在現場實例化它時,你不能用模仿使用mockito來重載那個實例化。

如果您將它作爲doSomething的參數傳遞,您應該可以執行此操作。

我相信PowerMock可以幫助你,如果你想超載內部建設。

0

當你不需要斷言到School實例,只是傳遞一個嘲笑實例作爲一個參數,你可以做到以下幾點:

mockedBar.getStudent(Mockito.isA(School.class)); 

請閱讀有關isA(java.lang.Class<T> clazz)methodMockito文檔。

+1

這兩個鏈接都死了,請你更新。 –

相關問題