2010-02-26 16 views

Odpowiedz

26

Nie do końca rozumiem, z jakim problemem korzystasz z Mockito. Zakładając, że stworzenie makiety interfejsu, który zawiera metodę myMethod() można następnie zweryfikować tylko parametry do metody, którą jesteś zainteresowany Na przykład (zakładając, że interfejs jest nazywany MyInterface i przy użyciu 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(), ...); 
} 

Aby to zadziałało, musisz wykonać statyczny import na metodach Mockito. Matcher nie ma znaczenia, jaka wartość została przekazana podczas sprawdzania.

Nie można uniknąć podania czegoś dla każdego argumentu w swojej metodzie (nawet jeśli jest to tylko NULL).

+1

Chyba naprawdę chce wywoływać myMethod(), więc za każdym razem musi przekazywać wszystkie te parametry, co powoduje nadejście testu. –

+0

Testuję kontroler i używam mojej metody serwisowej. usługa jest kpiona. Chyba każdy() powinien działać. Dzięki –

3

Tworzenie klasy otoki, który wywołuje prawdziwą metodę i wypełnia wszystkie argumenty, ale te, które dostarczają (a.k.a „delegacji”).

Przy następnej okazji należy zgłosić błąd w projekcie z prośbą o przeniesienie parametrów do obiektu konfiguracyjnego.

+4

True - zbyt wiele parametrów na sygnaturze metody jest złym kodem "zapach". – SteveD

+0

Mam 5 parametrów, i tak, są one potrzebne :) Jest to metoda usługi, próbuję stub. Chciałem tylko być teoretyczny dla metod, w których nie chcesz zagłuszać parametrów. –

+0

Problem z argumentami "miliona" wydaje się być bardzo częstym problemem z wieloma usługami SOAP. #fail – Kimble

10

użycie mockito.any

jeśli myObj myMethod akceptuje ciąg, łańcuch, pasek na przykład

stub rozmowy

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

aby zweryfikować SteveD dał odpowiedź już

Mockito.verify(myojb).myMethod(
    Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class))); 
Powiązane problemy