我对mochajs测试有一个奇怪的问题。我不了解对异步和Promise函数的深入了解。
我在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
运行测试时,它永远不会进入“ it”。
但是当我添加另一个如下描述时
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测试运行程序将处于当前线程中,而不会等待返回Promise。
我只是将readFile方法移到了测试之外,并在执行describe之前加载了它。