如何通过chai断言获取mocha来报告文件/行号?

edA*_*a-y 10 mocha.js chai

我使用的是mochachai.assert我的测试.捕获并报告错误,但它们不会显示文件/行号.我习惯用其他语言的测试来获取位置信息,否则很难弄清楚哪个断言失败了.

有没有办法用mocha/chai/assert获取位置信息?

Lou*_*uis 17

从版本1.9.1开始,如果将includeStack标志设置为true,则会在断言失败时获得堆栈跟踪:

var chai = require("chai");
chai.config.includeStack = true;
var assert = chai.assert;

describe("test", function () {
    it("blah", function () {
        assert.isTrue(false);
    });
});
Run Code Online (Sandbox Code Playgroud)

在1.9.1之前的版本中,您必须设置chai.Assertion.includeStack = true.从1.9.1开始,不推荐使用这种获取堆栈跟踪的方法.它仍然可以在1.10.0中使用,但可以在1.11.0或2.0.0中删除.(详情请见此处.)

上面的示例将显示assert.isTrue失败的堆栈跟踪.像这样:

AssertionError: expected false to be true
      at Assertion.<anonymous> (.../node_modules/chai/lib/chai/core/assertions.js:193:10)
      at Assertion.Object.defineProperty.get (.../node_modules/chai/lib/chai/utils/addProperty.js:35:29)
      at Function.assert.isTrue (.../node_modules/chai/lib/chai/interface/assert.js:242:31)
      at Context.<anonymous> (.../test.js:7:16)
      [... etc ...]
Run Code Online (Sandbox Code Playgroud)

(我已经将跟踪截断为仅相关的并截断路径.)上面我所包含的最后一帧是发生错误的那一帧(.../test.js:7:16).我认为chai不允许拥有断言调用的文件名和行号.


Bra*_*rst 7

chai.Assertion.includeStack现已弃用.请chai.config改用

var chai = require("chai");
chai.config.includeStack = true;
var assert = chai.assert;
Run Code Online (Sandbox Code Playgroud)