Тестовая функция Mochajs "Это" никогда не запускается при вызове внутри функции Promise.then - PullRequest
0 голосов
/ 04 января 2019

У меня странная проблема с тестами mochajs. Я не понимаю глубокое понимание асинхронных и обещающих функций.

У меня есть следующий тест в mytest.js

  describe(" store tests", () => {
  jsonfile.readFile(testDateFile).then(data => {
    describe("store is running", function() {
      it(`should show home page ${data}`, async function() {
        console.log("working");
      });
    });
  });
});

, где jsonfile.readFile возвращает Обещание.

когда я запускаю тест с ./node_modules/.bin/mocha test/verify-urls.js, он никогда не попадает в «это».
Но когда я добавляю еще одно описание, вроде следующего:

describe(" store tests", () => {
  describe("store is running", function() {
    it("should do nothing", () => {});
  });
  jsonfile.readFile(testDateFile).then(data => {
    describe("store is running", function() {
      it(`should show home page ${data}`, async function() {
        console.log("working");
      });
    });
  });
});

, затем it(should show home page ${data} выполняется.

Буду признателен за любое предложение понять проблему.

Редакция: Я понял. Проблема в jsonfile.readFile(testDateFile). Так как jsonfile.readFile - асинхронный и другой поток. Mocha Test Runner будет в текущей ветке и не будет ждать возврата Promise. Я просто переместил метод readFile за пределы тестов и загрузил его перед выполнением description.

...