0

我正在尝试使用赛普拉斯测试中的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,

有人可以告诉我如何解决这个问题吗?

4

1 回答 1

2

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

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

这是使用 ssh 连接到 mysql 的示例 -如何通过 ssh 隧道连接 mysql 和 cypress?

于 2021-12-21T22:03:53.047 回答