2017-02-11 4 views
0

私はこの春のブートアプリケーションを持っています。このアプリケーションでは、メソッド内に以下の行があります。Springブートを使用して、パラメータとしてファイルリーダーを持つクラスにバッファリングされたリーダーを挿入するにはどうすればよいですか?

これを私のコードに挿入すれば、単体テストのために模擬することができますか? guiceを使って私はプロバイダを使うことができました。しかし、私はどのようにこれを達成することができます春のブート?どんな助けでも大歓迎です。

答えて

1

以下の行を持つクラスをメソッド内でモックする場合。

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

+0

私はこのファイルを読み込む必要があり、プロパティからファイル名を取るリソースディレクトリ内foo.propertiesファイルを作成し、これを行うには

@Inject private BufferedReader bufferedReader; 

したがって、readFileメソッドはありません。この行は別のメソッドの中にあり、読み込みファイルに対して何らかの処理を行います。これは不可能です。使用しているクラスにBufferedReaderを挿入する方法はありますか? – mayooran

+0

BufferedReaderのBeanを作成する@Bean \t BufferedReader reader()throws FileNotFoundException { \t \t新しいBufferedReader(新しいFileReader(FILENAME))を返します。 \t}を入力してください。 – Barath

+0

ファイル名はコマンドラインパラメータとして指定します。現在、コントローラクラスはCommandLineRunnerを実装し、パラメータを取得します。これをこのBeanメソッドにどのように関連付けるのですか? – mayooran

1

あなたは以下のような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 
+0

ファイル名は、コマンドラインパラメータとして与えられます。現在、コントローラクラスはCommandLineRunnerを実装し、パラメータを取得します。これをこのBeanメソッドにどのように関連付けるのですか? – mayooran

+0

回答が更新されました。 – mhshimul

関連する問題