gpt4 book ai didi

java - 如何使用 Spring Boot 注入(inject)以 InputStreamReader 作为参数的 BufferedReader?

转载 作者:行者123 更新时间:2023-12-02 01:20:07 25 4
gpt4 key购买 nike

我的问题与 this question 相同。但是,我的 BufferedReader 采用 InputStreamReader 作为参数。我的代码如下所示:

URL url = new URL("http://localhost:8080/endpoint");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//Line of importance:
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

我如何注入(inject)它,以便我可以模拟它进行单元测试?提前致谢。

编辑:添加测试代码(我认为它应该如何工作):

添加一个bean(?):

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

使用模拟实例模拟所有依赖项:

@Mock
private HttpURLConnection httpURLConnection;

@Mock
private BufferedReader bufferedReader;

@Mock
private InputStream inputStream;

when(URLhandlerClass.getPath(any(String.class))).thenReturn("http://localhost:8080/endpoint);
when(bufferedReader.readLine()).thenReturn("firstLine", "secondLine", "thirdLine");
when(httpURLConnection.getInputStream()).thenReturn(inputStream);

错误:FileNotFoundException 和连接:连接被拒绝

最佳答案

你到底想 mock 什么?我在这里看到的最简单的方法是伪造整个方法,例如将所有内容包装在服务中,并在测试代码时对其进行整体模拟。

例如

@Service
public class DataReader {
public BufferedReader ReadDataFrom(string url){
URL url = new URL("http://localhost:8080/endpoint");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//Line of importance:
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
}
}

这很容易被伪造。通常,当你遇到问题时,你会问自己“我怎么 mock 这个?”解决方案是服务;)

关于java - 如何使用 Spring Boot 注入(inject)以 InputStreamReader 作为参数的 BufferedReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57865707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com