有什么区别
stub.yield([arg1, arg2, ...])spy.yields([arg1, arg2, ...])stub.callsArg(index)在Sinon.js存根库中?
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!" );
Run Code Online (Sandbox Code Playgroud)
在使用should.js进行测试时,所有断言都会通过.
是否有类似的测试模式stub.yields()和stub.callsArg(index)?
文档没有提供任何示例来澄清这两种方法,但我对它们很好奇.
Tra*_*man 32
我相信文档中概述的方法如下:
spy.yieldstub.yieldsstub.callsArg可以在sinon的产量文档中找到yields和之间的主要区别callsArg:
如果方法接受多个回调,则需要使用callsArg使存根调用除第一个之外的其他回调.
yields将使用您提供给它的任何可选参数调用它遇到的第一个函数参数.callsArg将尝试 在该调用对象中的给定索引处调用函数参数arguments,并且不向其传递任何参数(您可以使用callArgWith该行为).
spy.yield非常相似,stub.yields除了它是间谍API的一部分,它调用传递给它的所有回调.
以下是一些展示差异的例子(如果示例有点人为,请原谅我):
产量:
var fn = sinon.expectation.create().withArgs(1, 2);
var stub = sinon.stub().yields(1, 2);
stub(fn);
fn.verify();
Run Code Online (Sandbox Code Playgroud)
CallsArg:
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();
Run Code Online (Sandbox Code Playgroud)
产量:
var f1 = sinon.expectation.create().once();
var f2 = sinon.expectation.create().once();
var stub = sinon.stub().yield();
stub(f1, f2);
f1.verify();
f2.verify();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24799 次 |
| 最近记录: |