模拟 InputStream、InputStreamReader 和 BufferedReader

Mocking InputStream, InputStreamReader and BufferedReader

我有以下代码:

InputStream inputStream = sftpConfig.getSftpChannel().get(fileAbsolutePath);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)))
String line = bufferedReader.readLine();

我想要的只是模拟这些行,并且在bufferedReader.readLine()中灵活,因为我将根据行有几个测试用例(文件为空且行为空的情况,a我只得到一行的情况,我得到几行的情况等等)。

注意:我正在使用 jsch 库来访问 FTP 服务器上的文件,因此方法 getSftpChannel() 具有 ChannelSftp 作为 return 类型,并且get(fileAbsolutePath)InputStream.

我正在使用 junit 4.12mockito 3.1.0

提前致谢!

实例化 ByteArrayInputStream 实例而不是模拟它并用您需要的数据填充它可能更容易,例如

var stream = new ByteArrayInputStream("hello".getBytes());

你可以用它代替你的 InputStream。