首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在mocha中提供失败断言的上下文

如何在mocha中提供失败断言的上下文
EN

Stack Overflow用户
提问于 2015-12-04 08:13:48
回答 2查看 211关注 0票数 0

如果我将mocha.js与动态生成的测试结合使用,那么当测试失败时,如何打印变量值的上下文?

如果我们从mocha.js文档中拿出这个例子,

代码语言:javascript
运行
复制
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},

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-04 09:06:48

您可以向message方法中添加一个额外的参数assert.XYZ,当断言失败时将输出这些参数。您可以在那里添加所需的输出。

代码语言:javascript
运行
复制
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));
    });
});
票数 1
EN

Stack Overflow用户

发布于 2015-12-04 08:41:31

可以将附加注释作为assert方法的第三个参数传递。

代码语言:javascript
运行
复制
  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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34083676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档