已经被对象断言调用

iLe*_*ing 12 javascript unit-testing sinon sinon-chai

函数我正在监视,接收对象作为参数.我需要声明函数是使用对象的某些属性调用的.

例如:我的SUT有:

function kaboom() {

    fn({ 
        foo: 'foo', 
        bar: 'bar', 
        zap: function() { ... },
        dap: true
     });
}
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我可以这样做:

fnStub = sinon.stub();
kaboom();
expect(fnStub).to.have.been.called;
Run Code Online (Sandbox Code Playgroud)

这是有效的(很高兴知道fn被称为).现在我需要确保已将正确的对象传递给函数.我只关心 foobar属性,即我必须为参数的特定属性设置匹配.怎么样?

upd:sinon.match()似乎适用于简单对象.我们提高吧,不是吗?

如果我想将zap函数包含在断言中怎么办?我该如何工作?

Tra*_*man 22

假设你正在使用sinon-chai,你可以calledWithsinon.match一起使用来实现这个目的

expect(fnStub).to.have.been.calledWith(sinon.match({
  foo: 'foo',
  bar: 'bar'
}));
Run Code Online (Sandbox Code Playgroud)

  • 但是由于某种原因对我不起作用,这表明其余属性不匹配。让我再试一次,也许我在这里做错了 (2认同)