我运行了许多看起来像这样的Mocha测试:
it('should fail blabla', function () {
return <functionThatReturnsAPromise>()
.then(function () {
assert(false);
}, function (err) {
assert.strictEqual(err.message, 'Foobar is undefined');
assert.strictEqual(err.code, 'EUNDEFINEDFOOBAR');
});
});
我的测试中唯一不同的是功能,代码和消息。
我想像这样分解代码:
function shouldBeRejected(promise, code, message) {
return promise
.then(function () {
assert(false);
}, function (err) {
assert.strictEqual(err.code, code);
assert.strictEqual(err.message, message);
});
}
(...)
it('should fail blabla', function () {
return shouldBeRejected(<functionThatReturnsAPromise>(),
'EUNDEFINEDFOOBAR', 'Foobar is undefined');
});
它有效,但是当某些测试失败时,我的所有回溯都会引用shouldBeRejected
函数,因此,我失去了有关失败的真实测试的所有信息。
有没有办法让更多的智能&#34; backtrace指向间接引发错误的shouldBeRejected调用?也许在某处使用captureStackTrace?