#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();
});
});
это возвращает:
- следует ответить перенаправлением на сообщение: Ошибка: превышен тайм-аут в 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()