如何使用 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();
嗨,我想像下面那样监视函数,因为函数 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();