Выполнение обещаний с ответом chai-http - PullRequest
1 голос
/ 03 апреля 2019

Я очень новичок в NodeJ и пытаюсь запустить тесты.Я пытаюсь вернуть HTTP-ответ от вызова get, чтобы я мог выполнить на нем утверждения.SendGetResponse () возвращает обещание, а sendResponse ожидает выполнения этого обещания.Но я получаю (узел: 2152) UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'then' из undefined и sendResponse не ждет.

Любая помощь будет оценена!

async sendResponse(){
  this.setUpRequest();
  if (this.verb == 'get'){
    var Promise1 = await this.sendGetRequest();
    console.log("Going to resolve promise");
    console.log(Promise1);
  }
  console.log('Leaving Sendresponse');
  return this.ResponseMessage;
}

sendGetRequest() {
  console.log("In SendGetRequest()");

  const SendRequest = this.GetRequest(this.path,this.headers);
  SendRequest.then(function(res,err){       
    return new Promise(function(resolve, reject){
      if (err == null){
        console.log("Resolving promise");
        resolve(res.text);
      }
      else{
        console.log("Rejecting promise");
        reject(err);
      }
    }).catch(error => { 
      console.log('Exception caught', err.message);
    });
  });
}

GetRequest(path,headers){ 
  console.log("In GetRequest()");
  return chai.request(baseurl).get(path).set(headers);
}

1 Ответ

0 голосов
/ 03 апреля 2019

Глядя на документацию chai Запросы , похоже, вам нужно будет вызвать .send() при настройке каких-либо свойств HTTP, таких как заголовки или данные формы.Попробуйте следующее изменение на GetRequest():

function GetRequest(path, headers) {
  return chai.request(baseUrl)
    .get(path)
    .set(headers)
    .send();
}
...