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

时间:2013-12-21 08:16:53

标签: mocha chai

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

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

2 个答案:

答案 0 :(得分:16)

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

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

describe("test", function () {
    it("blah", function () {
        assert.isTrue(false);
    });
});

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

上面的示例将显示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 ...]

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

答案 1 :(得分:7)

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

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