gpt4 book ai didi

java - 如何模拟 SFTP 连接的连接

转载 作者:行者123 更新时间:2023-12-02 05:44:35 25 4
gpt4 key购买 nike

我的程序打开 sftp 连接并连接到服务器以获取然后处理的文件。我正在为此方法编写一个测试用例,尝试模拟连接。

我的实际类(class)是:

public void getFile() {
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
String path = ftpurl;
try {
JSch jsch = new JSch();
session = jsch.getSession(username, host, port);
session.setConfig("StrictHostKeyChecking", "no");session.setPassword(JaspytPasswordEncryptor.getDecryptedString(jaspytEncryptionKey, jaspytEncryptionAlgorithm, password));

session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;

channelSftp.cd(path);

Vector<ChannelSftp.LsEntry> list = channelSftp.ls("*.csv");
for (ChannelSftp.LsEntry entry : list) {
if (entry.getFilename().startsWith("A...")) {
findByFileName(entry.getFilename());
}
}
channelSftp.exit();
session.disconnect();
} catch (JSchException e) {
LOGGER.error("JSch exception"+e);
} catch (SftpException e) {
LOGGER.error("Sftp Exception"+e);
}
}

到目前为止的测试类(class):

@Test
public void getNamesTestValid() throws IOException, JSchException {
JSch jsch = new JSch();

Hashtable config = new Hashtable();
config.put("StrictHostKeyChecking", "no");
JSch.setConfig(config);

Session session = jsch.getSession( "remote-username", "localhost", 22999);
session.setPassword("remote-password");

session.connect();

Channel channel = session.openChannel( "sftp" );
channel.connect();

ChannelSftp sftpChannel = (ChannelSftp) channel;
Mockito.when(fileRepository.findByFileName(fileName)).thenReturn(fileDetail);
scheduler.getCSVFileNames();
}

当尝试模拟连接时,它会搜索实际端口,错误是端口无效,连接被拒绝。我只想 mock 这种联系。我的另一个疑问是在模拟连接之后我应该从哪里读取文件详细信息。

最佳答案

这是因为您正在使用 new Jsch() 创建实际连接。您需要使用 Mockito 等库来模拟连接。例如:


@RunWith(MockitoJUnitRunner.class)
class Test {

@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private JSch mockJsch;

..

void test() {
Session mockSession = mockJsch.getSession("username", "localhost", 22999);
..
}
}

关于java - 如何模拟 SFTP 连接的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56109076/

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