【发布时间】:2015-03-26 16:33:04
【问题描述】:
我正在构建一个节点模块,并尽我所能对它进行单元测试。我已经设置了 mocha 和 chai 来进行测试处理。我在测试我的异步方法(返回承诺的方法)时遇到问题。
在下面的测试中,我正在“升级”对象上测试一个方法。
it('Should return a list of versions for the default git repo', function (done) {
fs.writeFileSync(appSetup.CONFIG_FILENAME, JSON.stringify(appSetup.DEFAULT_CONFIG));
var upgrade = new Upgrade({
quiet: true
});
upgrade.getVersions().then(function (versions) {
assert(versions && versions.length > 0, 'Should have at least one version.');
assert.equal(1, 2); // this throws the exception which causes the test case not even exist
done();
}, done);
});
getVersions() 调用返回一个承诺,因为该方法是异步的。当承诺解决时,我想测试 versions 变量中返回的值。
assert(versions && versions.length > 0, 'Should have at least one version.'); 是实际测试。我添加了assert.equal(1, 2);,因为我注意到当测试失败时,测试用例甚至不会出现在测试列表中。
我假设 assert 调用引发了 Mocha 应该拾取的异常。但是它被困在了then 处理函数中。
这里发生了什么?为什么当该方法中的断言将失败时,它不会在列表中显示测试用例(它没有显示为失败;就像它不存在一样)?
【问题讨论】:
标签: node.js testing promise mocha.js