ElasticSearch JavaScript承诺

时间:2016-06-24 18:51:06

标签: javascript elasticsearch promise mocha

在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
        });
    });
};

2 个答案:

答案 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();
  });
});