我正在使用mocha
和chai.assert
进行测试。捕获并报告错误,但它们不会显示文件/行号。我习惯用其他语言的测试来获取位置信息,否则很难弄清楚哪个断言失败了。
有没有办法通过mocha / chai / assert获取位置信息?
答案 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;