【问题标题】:When testing Promises with Mocha, how can I print the full stack trace when an error occurs使用 Mocha 测试 Promises 时,发生错误时如何打印完整的堆栈跟踪
【发布时间】:2017-07-08 22:49:13
【问题描述】:

假设我有一个像这样的小规格:

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

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

12 passing (88ms)
1 failing

1) feature does stuff:
   TypeError: Cannot read property 'method' of undefined

如何让 mocha 打印此错误的完整堆栈跟踪?比如我想看

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

【问题讨论】:

  • Mocha 似乎为我提供了足够的堆栈跟踪来跟踪问题(直到调用中断代码的it),但这可能取决于调用堆栈。您可以尝试在命令行中添加--full-trace

标签: javascript node.js testing npm mocha.js


【解决方案1】:

来自这篇博文: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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多