У меня странная проблема с тестами 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.