javascript - 如何将对象数组与 sinon.js 匹配?

标签 javascript node.js sinon

如何在 sinon 匹配器中匹配结果数组?

例如,这段代码如何工作?

var mystub = sinon.stub();
var myarg = { val: 1, mylist: [ {a:1}, {b:2}, {c:3,d:4} ] };

mystub(myarg);

sinon.assert.calledOnce(mystub).withArgs(
  sinon.match({val: 1, mylist: [{a:1},{b:2},{c:3,d:4}]}) // this doesn't work
);

我怎样才能让它发挥作用? (请注意,在我的测试中,我无权访问 myarg - 因此我需要匹配它)。

显然,我可以编写自定义函数匹配器,但我正在寻找更易于读写的东西。

最佳答案

这是一个旧帖子,但我找不到这个问题的正确答案。

Sinon 支持嵌套匹配器。因此,要测试深层对象的匹配,您可以执行以下操作:

const mystub = sinon.stub();
const myarg = {
  val: 1,
  mylist: [{ a: 1, x: 'foo' }, { b: 2, y: 'bar' }, { c: 3, d: 4, e: 5 } ],
};

mystub(myarg);

sinon.assert.calledOnce(mystub);
sinon.assert.calledWithMatch(mystub, {
  val: 1,
  mylist: [
    sinon.match({ a: 1 }),
    sinon.match({ b: 2 }),
    sinon.match({ c: 3, d: 4 }),
  ],
});

关于javascript - 如何将对象数组与 sinon.js 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231496/

相关文章:

Javascript - 等待在错误的时间触发

node.js - MongoDB 正则表达式不一致

node.js - Sequelize 和 PostGIS 几何列未返回正确的 JSON

javascript - sinon: stub 什么时候恢复?

javascript - 多个 noUiSlider 实例化问题

javascript - 限制字段​​的函数在 mozilla 和 I.E 中不起作用

javascript - React/Javascript - 需要一个更好的进度条逻辑解决方案

node.js - 在 AppEngine Node.js 标准环境中稳定快速 session

javascript - Sinon 如何 stub 内部使用的类的函数

javascript - 在 sinon 中使用异步回调 stub 方法