2017-02-11 1 views

Antwort

1

Wenn Sie die Klasse verspotten möchten, die die untere Zeile innerhalb einer Methode haben.

BufferedReader reader = new BufferedReader(new FileReader("somePath")); 

ein Mock Instanz der Klasse erstellen und das Mock Verhalten definieren wie:

@MockBean 
private TestClass testClass; 

when(testClass.readFile()).thenReturn(content); 

wo Inhalt der Ausgabe, die Sie zurückgeben möchten ist.

können Sie eine Bohne von gepufferten Leser erstellen und injizieren:

@Bean 
BufferedReader reader(@Value("${filename}") String fileName) throws FileNotFoundException{ 

    return new BufferedReader(new FileReader(fileName)); 
} 

-Dfilename = somepath

+0

Ich brauche diese Datei zu lesen Zeile für Zeile, daher gibt es keine readFile-Methode. Diese Zeile innerhalb einer anderen Methode, die eine Verarbeitung der gelesenen Datei durchführt. Das ist also nicht möglich. Gibt es Möglichkeiten, den BufferedReader in die Klasse zu injizieren, die ich verwende? – mayooran

+0

eine Bohne von BufferedReader @Bean \t BufferedReader Leser() throws FileNotFoundException { \t \t return new BufferedReader (new Filereader (Dateiname)) erstellen; \t} und injizieren – Barath

+0

Dateiname wird als Befehlszeilenparameter angegeben. Derzeit implementiert die Controller-Klasse CommandLineRunner und ruft den Parameter ab. Wie verknüpfe ich das mit dieser Bean-Methode? – mayooran

1

Sie eine Bohne wie unten erstellen können.

@Bean 
    public BufferedReader bufferedReader() throws FileNotFoundException { 
     return new BufferedReader(new FileReader("somePath")); 
    } 

Jetzt können Sie es in Ihre Klasse injizieren.

@Inject 
    private BufferedReader bufferedReader; 

Um Dateinamen von Eigenschaften, erstellen Sie eine foo.properties Datei in Ressourcen-Verzeichnis zu nehmen und dann wie folgt vorgehen:

@Configuration 
@PropertySource("classpath:foo.properties") 
public class SampleConfig { 
    @Value("${fileName}") 
    private String fileName; 

    @Bean 
    public BufferedReader bufferedReader() throws FileNotFoundException { 
     return new BufferedReader(new FileReader(fileName)); 
    } 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 

Foo.properties:

fileName=file_name 
+0

Dateiname wird als Befehlszeilenparameter angegeben. Derzeit implementiert die Controller-Klasse CommandLineRunner und ruft den Parameter ab. Wie verknüpfe ich das mit dieser Bean-Methode? – mayooran

+0

Antwort aktualisiert. – mhshimul

Verwandte Themen