如何在 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/