在Mocha / Chain启动块中测试以下代码,代码永远不会按预期等待。相反,日志报告创建开始,然后从测试(不包括)中记录,然后报告索引创建完成。
在承诺得到解决或拒绝之前,Mocha不应该退出前面的每个块吗?
我错过了什么?
module.exports.prototype.setup = function (term) {
this.logger.info("Re-creating the index '%s'", $index);
return this.client.indices.delete({
index: $index,
ignore: [404]
}).then((err, resp, respcode) => {
this.logger.info("Creating index '%s'", $index);
return this.client.indices.create({
index: $index,
body: this.schemaBody
});
});
};
答案 0 :(得分:1)
你需要写一个async test来测试承诺。
it("should do something", (done) => {
setup("stuff").then((index) => {
/* test index */
done();
});
});
你也可以从测试中返回一个promise,mocha会等待它解决。
it("should do something", () => {
return setup("stuff").then((index) => {
/* test index */
});
});
答案 1 :(得分:0)
你是如何从Mocha / Chai测试中调用此代码的?它在beforeEach
吗?从Mocha Documentation您可以执行以下操作之一:
// [Option A] return a promise
beforeEach(() => {
return setup("foo");
});
// [Option B]: add a `done` parameter, and call it when you are done
beforeEach((done) => {
return setup("foo").then(() => {
done();
});
});