2012-06-24 2 views
0

Formulaire docs:Comment dans mockito créer un dossier d'appel de méthode?

Comparable c=mock(Comparable.class); 
    when(c.compareTo(anyInt())).thenReturn(-1); 

Je voudrais:

File tempDir=new File("test"); 
    Comparable c=mock(Comparable.class); 
    when(c.compareTo(anyInt())).thenReturn(tempDir.mkdir()); 

Ainsi sera créé le dossier réel (je vais l'utiliser la prochaine méthode privée de classe). Est-ce possible? Merci.

+0

avez-vous essayé? – Genzer

+0

Cela n'a aucun sens. 'File.mkdir()' renvoie un 'boolean' et' Comparable.compareTo (Comparable) 'retourne un' int'. Donc non, ça ne peut pas être fait. –

Répondre

1

Il est incroyablement difficile de savoir ce que vous essayez d'accomplir. Je ne suis pas du tout sûr de savoir pourquoi vous voulez faire quelque chose comme ça en premier lieu.

Comme je l'ai dit dans mon commentaire, la raison pour laquelle votre exemple actuel ne compilera pas est parce que File.mkdir() renvoie un boolean et Comparable.compareTo(Comparable) renvoie un int. Vous pouvez cependant, faire de cette compilation, si vous moquez une méthode qui retourne un boolean, comme ceci:

public class Foo { 
    public static void main(String[] args) { 
    File file = new File("/tmp/111"); 
    Bar bar = mock(Bar.class); 
    when(bar.isTrue()).thenReturn(file.mkdir()); 
    } 

    public static interface Bar { 
    public boolean isTrue(); 
    } 
} 

Cela dit, je doute sérieusement que cela va faire ce que vous voulez. La ligne when(bar.isTrue()).thenReturn(file.mkdir());appelle effectivementfile.mkdir(). Ainsi, votre répertoire sera créé lorsque vous créez votre maquette. En d'autres termes, l'exemple précédent peut (et doit) être écrit comme équivalente:

public class Foo { 
    public static void main(String[] args) { 
    File file = new File("/tmp/111"); 
    Bar bar = mock(Bar.class); 
    boolean dirMade = file.mkdir(); 
    when(bar.isTrue()).thenReturn(dirMade); 
    } 

    public static interface Bar { 
    public boolean isTrue(); 
    } 
} 

L'écrire comme ceci éviterait toute confusion lorsque le répertoire a été effectivement créé.

+0

Merci pour la réponse. Cela m'aide à mieux comprendre les moqueries. – user710818

Questions connexes