如何比较承诺结果与柴承诺

时间:2016-03-15 23:17:55

标签: javascript promise mocha chai

我正按照承诺开始使用Mocha,Chai和Chai。我正在创建一个测试框架,它读入一系列测试文件,通过解析过程运行它们,并将结果与​​同一目录中并行文件中的一些保存输出进行比较。

我最初的抨击似乎是:

var files = glob.sync('./tests/data/*.txt');
files.forEach(function(file) {

    it("correctly parses " + file.replace( /\.txt$/,''), function(){
        return runTestForFile(file).should.eventually.deep.equal(
                     getExpectedOutputForFile(file));
    });

});

runTestForFile和getExpectedOutputForFile都返回promises。我正在使用蓝鸟,如果这有任何区别。这与比较错误失败。正如预期的那样,实际值作为我的一个对象出现,但getExpectedOutputForFile返回的期望值将作为promise的对象转储出现。我有点惊讶,因为我认为通过使用chai-as-promised这将起作用。这样做的:

it('test', function() {
    Promise.resolve(2).should.eventually.equal(Promise.resolve(2));
});

工作正常。最后,我通过添加:

来实现它
chaiAsPromised.transformAsserterArgs = function (args) {
    return Promise.all(args);
};

但我不知道为什么这是必要的,或者它是如何真正改变的!有人可以解释我缺少的东西/建议更好的方法吗?

0 个答案:

没有答案