2013-06-20 32 views
25

2 yönteme sahip bir sınıfım var. Sınıfı alay etmek ve sonra ilk yöntemi alayım, ancak ikincisini değil.Mockito arama gerçek yöntemi

örn.

class C { 
void m1() { ...} 
boolean m2() { ... return flag;} 
}  

birim test kodu:

C cMock = Mockito.mock(C.class); 
Mockito.doNothing().when(cMock).m1(); 
Mockito.when(cMock.m2()).thenCallRealMethod(); 

garip bir şey m2 çağrılan olmamasıdır.

Burada bir şey özlüyor muyum?

+1

gerçek C sınıfı final değil mi? Ayrıca, bir alternatif olarak, bir Mock yerine bir Spy yapabilir ve daha sonra m1 için 'doNothing()' yapmalısınız. –

+2

Bize tüm birim test kodunu verebilir misiniz? Çünkü burada m2 denilmiyorsa bu normaldir. Senin sadece alayların davranışlarını ilan ediyorsun. Ancak gerçek bir yöntem denemez. – LaurentG

+0

@Kevin. evet onun finali değil. Casus çalıştı! –

cevap

4

eksikti çağrısı: cMock.m2();

35

Ayrıca, Mockito.spy'un kullanılabildiği yer burasıdır. Gerçek nesneler üzerinde kısmi alay yapmanıza izin verir.

C cMock = Mockito.spy(new C()); 
Mockito.doNothing().when(cMock).m1();