如何在 mocha 中提供失败断言的上下文
How to provide context of failed assertion in mocha
如果我将 mocha.js 与 dynamically generated tests 一起使用,那么如何打印出测试失败时变量值的上下文?
如果我们从 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},
?
您可以将附加注释作为 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) add() correctly adds 3 args:
AssertionError: {"args":[1,2,3],"expected":8}
+ expected - actual
-6
+8
您可以向 assert.XYZ 方法添加一个附加参数 message
,当断言失败时将输出该参数。你可以在那里添加你想要的输出
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));
});
});
如果我将 mocha.js 与 dynamically generated tests 一起使用,那么如何打印出测试失败时变量值的上下文?
如果我们从 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},
?
您可以将附加注释作为 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) add() correctly adds 3 args: AssertionError: {"args":[1,2,3],"expected":8} + expected - actual -6 +8
您可以向 assert.XYZ 方法添加一个附加参数 message
,当断言失败时将输出该参数。你可以在那里添加你想要的输出
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));
});
});