如何使用 Spring 引导将缓冲的 reader 注入 class 并使用文件 reader 作为其参数?
How do I inject a buffered reader into a class with a file reader as its parameter using Spring boot?
我有这个 spring 引导应用程序,其中的方法中包含以下行。
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
如何将它注入我的代码,以便我可以模拟它进行单元测试?使用 guice 我可以使用提供程序。但是我怎样才能使用 spring 启动来实现这个呢?任何帮助将不胜感激。
如果你想模拟 class 方法中有下面一行。
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
创建 class 的模拟实例并定义模拟行为,例如:
@MockBean
private TestClass testClass;
when(testClass.readFile()).thenReturn(content);
其中内容是您想要 return 的输出。
您可以创建缓冲 reader 的 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"));
}
现在您可以将其注入您的 class。
@Inject
private BufferedReader bufferedReader;
要从属性中获取文件名,请在资源目录中创建一个 foo.properties 文件然后执行此操作:
@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
我有这个 spring 引导应用程序,其中的方法中包含以下行。
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
如何将它注入我的代码,以便我可以模拟它进行单元测试?使用 guice 我可以使用提供程序。但是我怎样才能使用 spring 启动来实现这个呢?任何帮助将不胜感激。
如果你想模拟 class 方法中有下面一行。
BufferedReader reader = new BufferedReader(new FileReader("somePath"));
创建 class 的模拟实例并定义模拟行为,例如:
@MockBean
private TestClass testClass;
when(testClass.readFile()).thenReturn(content);
其中内容是您想要 return 的输出。
您可以创建缓冲 reader 的 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"));
}
现在您可以将其注入您的 class。
@Inject
private BufferedReader bufferedReader;
要从属性中获取文件名,请在资源目录中创建一个 foo.properties 文件然后执行此操作:
@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