Модульное тестирование потоков в node.js, жасмин - PullRequest
1 голос
/ 09 апреля 2020

У меня есть обещание, которое вызывает HTTP get, для извлечения файла csv, этот HTTP возвращает мне ответ, который я могу использовать в качестве потока, я передаю ответ через синтаксический анализатор csv и подумал, что еще один забавный c, который является записываемым потоком, а затем я слушаю некоторые события.

Но моя проблема заключается в проверке этого, моя проблема в том, что я не могу смоделировать вызов событий, я не знаю, как достичь коды внутри fini sh и error.

Вот фрагмент кода, который извлекает файл и передает ответ:

return new Promise((resolve, reject) => {
    https.get(url, async response => {
      response
        .pipe(this.csvParser)
        .pipe(crazyfunc)
        .on("finish", () => {
          logger.info("File process finished")
          resolve()
        })
        .on("error", (err: Error) => {
          if (err) {
            reject(err)
          }
        })
      resolve()
    })
  })

А вот мой файл .spe c, я высмеивать этот призыв следующим образом:

const response = {
    pipe: () => { },
    on: () => { }
};

beforeEach(async () => {
    spyOn(response, 'pipe').and.returnValue(response)
    spyOn(response, 'on').and.returnValue(response)
});

spyOn(https, 'get').and.callFake((url, func) => func(response))
...