простой запрос на получение в mocha timeout

#javascript #node.js #rest #https #mocha.js

#javascript #node.js #отдых #https #mocha.js

Вопрос:

У меня есть следующий код

 const https = require("https");

it("wait for some result", function (done) {
  this.timeout(15000);
  const options = {
    hostname: "httpbin.org",
    path: "/get",
    headers: {
      Authorization: "bearer ",
    },
  };
  https.get(options, (resp) => {
    let data = "";
    // A chunk of data has been recieved.
    resp.on("data", (chunk) => {
      data  = chunk;
      console.log(data);
    });
    // The whole response has been received. Print out the result.
    resp.on("end", () => {
      console.log(JSON.parse(data).explanation);
    });

    resp.on("error", (err) => {
      console.log("Error: "   err.message);
    });
    done();
  });
});

  

это возвращает:

  1. следует ответить перенаправлением на сообщение: Ошибка: превышен тайм-аут в 15000 мс. Убедитесь, что в этом тесте вызывается обратный вызов done().

Я пытаюсь сделать это асинхронным из-за mocha, поэтому я использую обратный вызов. Я даже жду 15000 вместо 2000 мс по умолчанию.

этот код обычно работает, только сбой с mocha. Не уверен, как исправить эту проблему. Любая помощь приветствуется. Заранее спасибо.

Комментарии:

1. вы пробовали вставлять done в resp.on("end") обратный вызов?

2. @Yevhenii да, я получаю то же самое

Ответ №1:

попробуйте добавить .end() в свой запрос объект

   const req = https.get(options, (resp) => {
    let data = "";
    // A chunk of data has been recieved.
    resp.on("data", (chunk) => {
      data  = chunk;
      console.log(data);
    });
    // The whole response has been received. Print out the result.
    resp.on("end", () => {
      console.log(JSON.parse(data).explanation);
      done();
    });

    resp.on("error", (err) => {
      console.log("Error: "   err.message);
    });
  });
  req.end()