如何使用sinon监视内部存根返回

时间:2016-05-17 08:01:01

标签: javascript unit-testing sinon stub spy

您好我想监视下面的函数,因为函数返回一个promise,所以我需要返回promise,让其他代码继续运行。

但它从未通过测试,我做错了吗?我怎么能正确地做到这一点?提前谢谢。

抱歉,我可能没有清楚地描述问题,another_fn会调用object.method.origin_fn,而orgin_fn会返回一个承诺;我想窥探origin_fn被调用。我怎么能这样做?

let spy_fn = sinon.spy();
sinon.stub(object, 'method').returns({              
    origin_fn(args) {
       spy_fn(args);
       return Promise.resolve();
    }
});

another_fn('test_args');
spy_fn.should.have.been.calledWith('test_args');

1 个答案:

答案 0 :(得分:0)

如果您只想确保使用正确的参数调用origin_fn,则可以使用以下内容:

let spy = sinon.stub(object, 'method').returns({
  origin_fn(arg) {
    arg.should.equal('test_args');
  }
})

let fn = function() { another_fn('test_args'); };
fn.should.not.throw();