- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么区别
stub.yield([arg1, arg2, ...])
spy.yields([arg1, arg2, ...])
stub.callsArg(index)
在 Sinon.js stub 库?
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()
是否有类似的测试模式和stub.callsArg(index)
?
文档没有提供任何示例来阐明其他两种方法,但我对它们很好奇。
最佳答案
我相信文档中概述的方法如下:
spy.yield
stub .yields
stub.callsArg
yields
和 callsArg
之间的主要区别可以在 sinon 的 yield 文档中找到:
If a method accepts more than one callback, you need to use callsArg to have the stub invoke other callbacks than the first one.
yields
将调用它遇到的第一个函数参数以及您提供给它的任何可选参数。 callsArg
将尝试调用该调用的 arguments
对象中给定索引处的函数参数,并且不会向其传递任何参数(您可以使用 callArgWith 来实现该行为)。
spy.yield
与 stub.yields
非常相似,除了它是 spy API 的一部分并且它调用传递给它的所有回调。
以下是一些展示差异的示例(如果示例有点做作,请原谅我):
产量:
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();
产量:
var f1 = sinon.expectation.create().once();
var f2 = sinon.expectation.create().once();
var stub = sinon.stub().yield();
stub(f1, f2);
f1.verify();
f2.verify();
关于javascript - 理解Sinon.js的yield()、yields()和callsArg(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003218/
我可以使用callsArgWith来测试回调,例如: var modelsMock = { Users: { findOne: sinon.stub() } }; usersContr
说真的,我想不通。文档给了我们: stub.callsArg(index) - 使 stub 调用提供的索引处的参数作为回调函数。 stub.callsArg(0);使 stub 调用第一个参数作为回
我是一名优秀的程序员,十分优秀!