如何在 Cypress 测试中连接到 SFTP 服务器?

Posted

技术标签:

【中文标题】如何在 Cypress 测试中连接到 SFTP 服务器?【英文标题】:How to connect to SFTP server in Cypress test? 【发布时间】:2022-01-23 04:02:40 【问题描述】:

我在 Cypress 测试中尝试使用 ssh2-sftp-client NPM 包连接到 SFTP 服务器。

这是我目前的测试

describe('example to-do app', () => 
    it('displays two todo items by default', () => 
        let Client = require('ssh2-sftp-client');
        let sftp = new Client();
        
        sftp.connect(
          host: 'myHost',
          port: 'myPort',
          username: 'myUsername',
          password: 'myPassword'
        ).then(() => 
          return sftp.list('/reports');
        ).then(data => 
          console.log(data, 'the data info');
        ).catch(err => 
          console.log(err, 'catch error');
        );
    )
)

目前,当我运行测试时出现此错误:

Cannot read properties of undefined (reading 'DEFLATE')
node_modules/ssh2/lib/protocol/zlib.js:7:1
   5 |   createInflate,
   6 |   constants: 
>  7 |     DEFLATE,
     | ^
   8 |     INFLATE,
   9 |     Z_DEFAULT_CHUNK,
  10 |     Z_DEFAULT_COMPRESSION,

谁能告诉我如何解决这个问题?

【问题讨论】:

【参考方案1】:

在测试中建立这样的连接是行不通的。这是因为 cypress 不与主机提供的 Node.js 进程通信。在 cypress 中,如果我们需要运行节点代码,我们需要使用他们所谓的 cy.task 这是他们文档的链接 - https://docs.cypress.io/api/commands/task#Examples

这就是为什么您需要在任务内的cypress/plugins/index.js 文件中建立此连接,然后在测试中使用此任务。

这里是一个使用 ssh 连接 mysql 的例子 - How do I connect mysql with cypress through ssh tunneling?

【讨论】:

以上是关于如何在 Cypress 测试中连接到 SFTP 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如果在 Android 中连接到 BLE 设备失败,如何通知用户?

如何在 Flutter 应用程序中连接到本地实时数据库模拟器?

如何在 Cypress 中创建基本的普通测试报告

如何在 Codeigniter 3 中连接到 POSTGRESQL?

如何在bash中连接到wifi?

如何在中等信任环境中连接到当前的 FormsAuthenticationModule?