Как мне проверить обещание, используя Mocha?Получение "ReferenceError:это не функция - PullRequest
0 голосов
/ 25 июня 2019

Я написал обещание, которое звонит и проверяет код ответа.Я хочу проверить это с помощью узла.Я продолжаю получать сообщение «TypeError: index.GeneratePromise не является функцией» и не могу понять, в чем дело.

Я попытался обернуть обещание в другую функцию и вызвать его из тестового файла.Это не ждет ответа обещания, и возвращаемое значение равно «undefined».Я испробовал несколько форм обещаний, асинхронных / ожидающих и т. Д., Которые также не сработали.

Мой тест

var assert = require('assert');
var index = require('../index');
describe('Basic Mocha String Test', function () {

  it('promise', function () {
    index.GeneratePromise().then(function(value) {
      console.log("promise value: ", value);
      assert.equal(value, 200);
    });
  });
});

Мое обещание

exports.GeneratePromise = new Promise(function(resolve, reject) {
  https.get('https://www.google.com/', (resp) => {
    let data = '';
    resp.on('data', (chunk) => {
      data += chunk;
    });
    resp.on('end', () => {
      console.log('status code: ', resp.statusCode)
      resolve(resp.statusCode);
    });
  }).on("error", (err) => {
    reject(err);
  });
});

Янадеюсь получить хоть какое-то значение, а не "undefined".Это проблема не ожидания моего обещания в тестовом файле.

1 Ответ

1 голос
/ 26 июня 2019

Вы экспортируете фактическое обещание, а не функцию, которая создает обещание.Из-за этого вы не должны использовать ().Кроме того, it() может предоставить вам обратный вызов, чтобы сообщить mocha, что ваш тест завершен.См. mochas async docs .Попробуйте это:

var assert = require('assert');
var index = require('../index');
describe('Basic Mocha String Test', function () {
  it('promise', function (done) {
  //index.GeneratePromise().then(function(value) {
    index.GeneratePromise.then(function(value) { // Notice there is no ()
      console.log("promise value: ", value);
      assert.equal(value, 200);
      done(); // This tells mocha your test is done
    });
  });
});
...