我正在尝试测试我的Sinon测试中的间谍是否被一个确切的对象调用:没有遗漏属性,没有其他属性和没有更改属性。
我有这个:
assert( viewer.entities.add.calledWith( completeEntityObject ) );
但如果我省略了completeEntityObject
的某些属性,则测试成功。我希望它失败。我想深入比较一下。
我已经尝试过查看sinon.match
方法,但是,虽然对于数组的测试非常相等,但对象没有这样的测试。我怎么能做到这一点?
答案 0 :(得分:0)
我找到了解决方案。我用过这个:
sinon.assert.calledWith( addStub, sinon.match( cesiumPartialEntityObject ) );
如果缺少或有其他属性,则会失败。
答案 1 :(得分:0)
对于任何想如何断言您的sinon间谍是通过某些参数进行调用的人来说,这是一个简单的示例。
const spy = sinon.spy();
// If spy is ever called in your code with some arguments, like so:
spy({ hello: 'world'});
// You can assert for it in your tests like this:
expect(spy.getCall(0).calledWith(sinon.match({ hello: 'world' }))).to.be.true;
// Breaking this down a bit:
// spy.getCall(0) gives us the first time our spy function was called (because it can be called more than once)
// Bonus: While debugging, you can use spy.getCalls()[0].args[0] to get the arguments that your spy function was called with.
我希望这会有所帮助-这是我的第一个SO回复,因此,如果我违反规则或者没有详细解释事情,请原谅我。