如何使用 sinon 监视存根 returns 内部

How to spy inside stub returns with sinon

嗨,我想像下面那样监视函数,因为函数 return 是一个承诺,所以我需要 return 这个承诺让其他代码继续 运行。

但是一直没通过测试,是我做错了吗?我怎样才能正确地做到这一点?提前谢谢你。

抱歉,我可能没有把问题描述清楚,another_fn 将调用 object.method.origin_fn,而 orgin_fn return 是一个承诺;我想监视 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');

如果您只想确保使用正确的参数调用 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();