使用 Mocha 测试承诺时,发生错误时如何打印全栈跟踪



假设我有一个小规范,比如:

describe("feature", () => {
it("does stuff", () => {
return myPromiseBasedFn().then(result => {
expect(result).to.eql(1);
});
});
});

目前,当承诺被拒绝时,我只看到错误消息。例如:

12 passing (88ms)
1 failing
1) feature does stuff:
TypeError: Cannot read property 'method' of undefined

如何让摩卡打印此错误的完整堆栈跟踪?例如,我想看看

TypeError: Cannot read property 'method' of undefined
at SomeFunc (code/file.js:12:32)
at code/base.js:49:24

来自这篇博文: https://medium.com/front-end-hacking/stack-traces-for-promises-in-node-js-46bf5f490fe4

您可以使用:

global.Promise = require("bluebird");

然后设置:

BLUEBIRD_LONG_STACK_TRACES=1

运行测试以获取完整的堆栈跟踪时:

BLUEBIRD_LONG_STACK_TRACES=1 mocha …

这适用于 Typescript,如果您使用的是cls-hooked,您还需要包括:

let cls = require('cls-hooked');
let clsNamespace = cls.createNamespace('some-namespace')
let clsBluebird = require('cls-bluebird')
let Promise = require('bluebird')
clsBluebird(clsNamespace, Promise)

最新更新