私はこの春のブートアプリケーションを持っています。このアプリケーションでは、メソッド内に以下の行があります。Springブートを使用して、パラメータとしてファイルリーダーを持つクラスにバッファリングされたリーダーを挿入するにはどうすればよいですか?
これを私のコードに挿入すれば、単体テストのために模擬することができますか? guiceを使って私はプロバイダを使うことができました。しかし、私はどのようにこれを達成することができます春のブート?どんな助けでも大歓迎です。
私はこの春のブートアプリケーションを持っています。このアプリケーションでは、メソッド内に以下の行があります。Springブートを使用して、パラメータとしてファイルリーダーを持つクラスにバッファリングされたリーダーを挿入するにはどうすればよいですか?
これを私のコードに挿入すれば、単体テストのために模擬することができますか? guiceを使って私はプロバイダを使うことができました。しかし、私はどのようにこれを達成することができます春のブート?どんな助けでも大歓迎です。
以下の行を持つクラスをメソッド内でモックする場合。
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
はクラスのモックのインスタンスを作成し、同様に模擬動作を定義:コンテンツは、あなたが返すようにしたい出力され
@MockBean
private TestClass testClass;
when(testClass.readFile()).thenReturn(content);
。
あなたがバッファリングされ、読者のBeanを作成して注入することができます
@Bean
BufferedReader reader(@Value("${filename}") String fileName) throws FileNotFoundException{
return new BufferedReader(new FileReader(fileName));
}
-Dfilename = SOMEPATH
あなたは以下のようなBeanを作成することができます。
@Bean
public BufferedReader bufferedReader() throws FileNotFoundException {
return new BufferedReader(new FileReader("somePath"));
}
これでクラスに注入することができます。
@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
私はこのファイルを読み込む必要があり、プロパティからファイル名を取るリソースディレクトリ内foo.propertiesファイルを作成し、これを行うには
したがって、readFileメソッドはありません。この行は別のメソッドの中にあり、読み込みファイルに対して何らかの処理を行います。これは不可能です。使用しているクラスにBufferedReaderを挿入する方法はありますか? – mayooran
BufferedReaderのBeanを作成する@Bean \t BufferedReader reader()throws FileNotFoundException { \t \t新しいBufferedReader(新しいFileReader(FILENAME))を返します。 \t}を入力してください。 – Barath
ファイル名はコマンドラインパラメータとして指定します。現在、コントローラクラスはCommandLineRunnerを実装し、パラメータを取得します。これをこのBeanメソッドにどのように関連付けるのですか? – mayooran