我最近从should.js切换到chai.js,因为我发现前者在基于浏览器的测试中造成了障碍。由于支持语法,因此更改并不需要对我的测试套件进行任何更改,但我发现失败测试的输出不再以有用的方式向我显示实际值和期望值:
AssertionError: expected [ Array(9) ] to deeply equal [ Array(9) ]
我可以通过添加以下行来吐出这些值的表示:
chai.config.truncateThreshold = 0;
然而,这导致每个值都被彻底输出,包括函数,并包括原型属性。也没用。
那么我是否缺少某种方式让chai表现得像should.js,其中使用toString()方法显示实际值/期望值?
答案 0 :(得分:0)
使用.toString()
让Chai(v1.10.0)显示实际值和期望值的一种方法是在运行时修补其utils.objDisplay
。
基本要点是:
chai.use(function(_chai,utils) {
utils.objDisplay = function(obj) { return obj+''; };
});
然而,由于Chai在内部实例化重复(即:!==
)模块引用的方式,在实践中做的稍微复杂一些;在这种情况下,还需要修补utils.getMessage
。
这是一个演示整个补丁的小提琴,以及Array
个对象的自定义格式的简单示例:https://jsfiddle.net/humbletim/oc1tnqpy/
答案 1 :(得分:0)
根据 https://www.chaijs.com/guide/styles/#configuration,chai 现在允许您禁止截断断言错误中实际值和预期值的长度阈值。
chai.config.truncateThreshold = 0; // disable truncating