Se moquer de Fichier, FileReader et BufferedReader classe à l'aide de Mockito

J'ai reçu de code ci-dessous dans une méthode qui je veux tester

File f = map.get("key1")
BuffereReader r = new BufferedReader(new FileReader(f));
String line=null;
do {
    line=r.readLine();
} while(r!=null);

Je veux pour se moquer de cette opération afin que je puisse transmettre le contenu du fichier à partir du cas de test JUnit. Je l'ai fait ci-dessous:

Map fles = Mockito.mock(ConcurrentHashMap.class);
File file = Mockito.mock(File.class);
Mockito.when(files.get("key1")).thenReturn(file);

FileReader fileReader = Mockito.mock(FileReader.class);
BufferedReader bufferedReader = Mockito.mock(BufferedReader.class);

try {
     PowerMockito.whenNew(FileReader.class).withArguments(file).thenReturn(fileReader);
     PowerMockito.whenNew(BufferedReader.class).withArguments(fileReader).thenReturn(bufferedReader);
     PowerMockito.when(bufferedReader.readLine()).thenReturn("line1")
         .thenReturn("line2").thenReturn("line3");

    } catch (Exception e) {
        Assert.fail();
    }

Donc en gros j'ai besoin de passer "line1", "line2" et "line3" comme les lignes du fichier qui sont lus par les moqué BufferedReader.

Cependant, au moment de le faire, qu'il se trompe jamais comme NullPointerException lors de la tentative d'instancier new FileReader(f) de la partie.

Donc, est-ce parce que je ne peux pas se moquer d'un BufferedReader ou que l'approche est mal?

Grâce

InformationsquelleAutor user2654241 | 2013-09-24