有什么区别
stub.yield([arg1, arg2, ...])
spy.yields([arg1, arg2, ...])
stub.callsArg(index)
in the Sinon.js http://sinonjs.org/docs/#stubs存根库?
stub.yield()
是我唯一能够掌握的:
stub = sinon.stub(API, 'call_remote');
callback = sinon.spy();
API.call_remote('help', callback);
@stub.yield( "solution!" );
@stub.calledOnce.should.be.true;
@callback.calledOnce.should.be.true;
@callback.args[0][0].should.eql( "solution!" );
使用 should.js 进行测试时,所有断言都会通过。
是否有类似的测试模式stub.yields()
and stub.callsArg(index)
?
该文档没有提供任何示例来阐明其他两种方法,但我对它们很好奇。
我相信文档中概述的方法如下:
spy.yield
stub.yields
stub.callsArg
之间的主要区别yields
and callsArg
可以在 sinon 的收益率文档中找到:
如果一个方法接受多个回调,则需要使用callsArg让存根调用第一个回调之外的其他回调。
yields
将调用first它遇到的函数参数与您提供给它的任何可选参数。callsArg
将尝试调用函数参数给定索引在该通话中arguments
对象,并且不向其传递任何参数(您可以使用callArgWith
对于这种行为)。
spy.yield
非常类似于stub.yields
但它是间谍 API 的一部分,并且它调用传递给它的所有回调。
以下是一些展示差异的示例(如果示例有点做作,请原谅我):
Yields:
var fn = sinon.expectation.create().withArgs(1, 2);
var stub = sinon.stub().yields(1, 2);
stub(fn);
fn.verify();
调用参数:
var f1 = sinon.expectation.create().never();
var f2 = sinon.expectation.create().once();
var stub = sinon.stub().callsArg(1);
stub(f1, f2);
f1.verify();
f2.verify();
Yield:
var f1 = sinon.expectation.create().once();
var f2 = sinon.expectation.create().once();
var stub = sinon.stub().yield();
stub(f1, f2);
f1.verify();
f2.verify();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)