2015-05-11 18 views
5

Yalnızca geçersiz yöntemleri doğrulayabileceğinizi biliyorum. Ama aslında neden kendime soruyorum. Mockito: Boolean yöntemini doğrulayın (veya diğer türlerde)

Kısa bir süre önce belirli bir aramanın yapıldığını doğrulamam gereken bir birim testine rastladım. Tam olarak, "newFolder.mkdirs()". Bu yöntemin davranışı bence oldukça fazla "voidy" dir. Ancak bir "özellik" olarak, dev'ler bu işlevin, eylemin başarılı olup olmadığını görmek için bir boole dönüş türü sağladı.

Güzel, ama bunun için çok fazla umurumda değil. Sadece bu çok aramanın yapıldığından emin olmak istiyorum, aynen önemli çağrıların yapıldığından emin olmak istiyorum.

Şimdi bunu yapmak için bir imkan var mı? Bu konuda oldukça sıkışıp kaldım, o küçük problem için bir çözüm hayal bile edemiyorum:/Biri iyi, kısa bir fikre kapıldı mı?


ben tamamen yanlış: Her şeyi kontrol edebilirsiniz. Köşeleri yanlış yerleştirdim.

vardı:

verify(newFolder.mkdirs()); 

Ben gerekli:

verify(newFolder).mkdirs(); 

aptalım, ben yanlış anlamış olabilir

+0

Sana bakacak hangi konu emin değilim? Şöyle bir şey denemek istediğiniz anlamına gelir: ne zaman (mock.hasNextItem()). ThenAnswer (yeni Yanıt() { Nesne yanıtı (InvocationOnMock çağırma) { adlı = 0; dönüş öğesi; } 'Burada yöntem hasNextItem() ',' boolean'ı döndürür. –

cevap

2

), ama nerede o sadece boşluk yöntemleri doğrulayabilir yazıyor? Örneğin

...

import org.junit.Test; 
import static org.mockito.Mockito.*; 

public class VoidTest { 

    private interface TestClass { 
     boolean doStuff(String arg); 
    } 

    @Test 
    public void doIt() { 
     TestClass tc = mock(TestClass.class); 

     tc.doStuff("[SOMETHING]"); 

     verify(tc).doStuff("[SOMETHING]"); // OK 
     verify(tc).doStuff("[SOMETHING ELSE ]"); // BOOM! 
    } 
} 
+0

Haklısınız, ya da tamamen hatalıydım. Accelel olarak yaptığım şey, "doğrulamak (newFolder.mkdirs());" yerine (newFolder) .mkdirs(); "-> Yanlış yerleştirilmiş parantezler :( – BAER