Как выполнить модульное тестирование, заглушку и макет потоков в mocha chai node.js для проверки ошибок - PullRequest
0 голосов
/ 20 сентября 2018

Я создаю решение, которое читает файл из корзины s3 в aws и записывает в местоположение sftp.Я использую следующий код, чтобы сделать это, однако, как мне выполнить модульное тестирование, в котором обещание будет отклонено. Как мне заглушить или смоделировать conn.on внутри функции?

    const fileTransferToSftp = (s3Params, key) => {
  return new Promise(function(resolve, reject) {
    conn.on('error', err => {
      console.log('SSH - Connection Error: ' + err);
      conn.end();
      reject(err);
    });

    conn.on('end', () => {
      console.log('SSH - Connection Closed');
    });

    conn
      .on('ready', () => {
        conn.sftp((err, sftp) => {
          if (err) reject(err);
          const readStream = s3.getObject(s3Params).createReadStream();
          const writeStream = sftp.createWriteStream(`/Inbox/${key}`);

          writeStream.on('error', err => {
            console.log('Error writing file: ' + err.message);
            reject(err);
          }); // 'path-to-remote-file.txt'
          readStream.on('error', err => {
            console.log('Error reading file: ' + err.message);
            reject(err);
          });

          writeStream.on('close', () => {
            console.log('- file transferred successfully');
            resolve(conn.destroy());
          });

          writeStream.on('end', () => {
            console.log('sftp connection closed');
            conn.close();
          });

          // Initiate transfer of file
          readStream.pipe(writeStream);
        });
      })
      .connect(sftpCredentials);
  });
};
...