如果我将mocha.js与动态生成的测试结合使用,那么当测试失败时,如何打印变量值的上下文?
如果我们从mocha.js文档中拿出这个例子,
var assert = require('assert');
function add() {
return Array.prototype.slice.call(arguments).reduce(function(prev, curr) {
return prev + curr;
}, 0);
}
describe('add()', function() {
var tests = [
{args: [1, 2], expected: 3},
{args: [1, 2, 3], expected: 6},
{args: [1, 2, 3, 4], expected: 10}
];
tests.forEach(function(test) {
it('correctly adds ' + test.args.length + ' args', function() {
var res = add.apply(null, test.args);
assert.equal(res, test.expected);
});
});
});
那么,如果第二次测试失败,如何打印出{args: [1, 2, 3], expected: 6},
?
发布于 2015-12-04 09:06:48
您可以向message
方法中添加一个额外的参数assert.XYZ,当断言失败时将输出这些参数。您可以在那里添加所需的输出。
tests.forEach(function(test) {
it('correctly adds ' + test.args.length + ' args', function() {
var res = add.apply(null, test.args);
assert.equal(res, test.expected, "Failed with data " + JSON.stringify(test));
});
});
发布于 2015-12-04 08:41:31
可以将附加注释作为assert
方法的第三个参数传递。
tests.forEach(function(test) {
it('correctly adds ' + test.args.length + ' args', function() {
var res = add.apply(null, test.args);
assert.equal(res, test.expected, JSON.stringify(test)); // third argument passed
});
});
将产生的产出如下:
1)正确添加3个args: AssertionError:{"args":1,2,3,“预期”:8}+预期-实际-6 +8
https://stackoverflow.com/questions/34083676
复制相似问题