Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用Mocha测试Promises时,当出现错误时,如何打印完整的堆栈跟踪_Javascript_Node.js_Testing_Npm_Mocha.js - Fatal编程技术网

Javascript 在使用Mocha测试Promises时,当出现错误时,如何打印完整的堆栈跟踪

Javascript 在使用Mocha测试Promises时,当出现错误时,如何打印完整的堆栈跟踪,javascript,node.js,testing,npm,mocha.js,Javascript,Node.js,Testing,Npm,Mocha.js,假设我有一个小规格,如: describe("feature", () => { it("does stuff", () => { return myPromiseBasedFn().then(result => { expect(result).to.eql(1); }); }); }); 目前,当承诺被拒绝时,我只看到错误消息。例如: 12 passing (88ms) 1 failing 1) feature does stuff:

假设我有一个小规格,如:

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
如何使mocha打印此错误的完整堆栈跟踪?例如,我想看看

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

您可以使用:

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

您可以使用:

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)

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