如何监视jQuery's附加函数Sinon
How to spy on jQuery's append function Sinon
我正试图使用sinon.js
在jQuery.append
函数上创建一个间谍。
我尝试了:var spy = sinon.spy($, "append");
,但得到以下错误:TypeError: Attempted to wrap undefined property append as function
。
然后我修改为:var spy = sinon.spy($.fn, "append");
,这看起来更好,但spy.called
是假的。
Sinon.spy(object, "method")
需要一个对象作为第一个参数,但$
是一个函数。你应该像这样监视$.prototype
:
var spy = sinon.spy($.prototype, "append");
小提琴:http://jsfiddle.net/RZ825/
或者你可以像这样监视单个对象:
var spy = sinon.spy($("body"), "append");
小提琴:http://jsfiddle.net/G5J8H/
我意识到这个问题很老了,但我也遇到了类似的问题,并找到了解决方案
我尝试了上面建议的一种方法。
var spy = sinon.spy($("body"), "append");
我的版本:
var spy = sinon.spy($("#id"), "function");
然而,这并没有奏效,我花了一些时间才弄清楚原因。事实证明,您需要访问jQuery对象之后的数组。
像这样:
var spy = sinon.spy($("#id")[0], "function");
Sinon对jQuery对象本身不做任何操作,因为它可以包含多个值,而且它不知道您想要哪个值(即使只有一个)。
PS:我注意到这不适用于所有jquery函数。对我来说,这是为了"专注"。PPS:这可能与这个问题无关。但我一直想做的是在因果报应跑步者中触发一个焦点事件。到目前为止,我一直不满意(不过点击事件确实有效)。我将在StackOverflow上为此发布一个问题。
我认为你不能监视jQuery函数——它们绑定到每个对象。它是这样工作的:
- 您在jQuery对象上调用方法
- jQuery在自己的$.fn中检查它
- jQuery在插件中检查它
如果找到-返回。如果没有-错误。西农不会在这里工作。
您必须监视$
并返回一个具有附加功能的对象作为间谍
var spy = jasmine.createSpy();
sinon.spy(window, "$").returns({append: spy})
- Stubbing Backbone类构造函数与Jasmin和Sinon
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- sinon 存根嵌套在描述/请求函数中
- Sinon-带有回调的存根函数-导致测试方法超时
- 在sinon中存根嵌套函数调用
- 如何使用 sinon.js 来模拟/监视 javascript 函数中提到的对象
- 使用 Sinon.js 测试一个函数是否调用 ES6 模块中的另一个函数
- sinon.js监视$.dataTables函数
- 如何使用sinon.js实现mock/stub回调函数
- 如何使用Chai/Sinon重构jasmine.any()函数
- 如何监视jQuery's附加函数Sinon
- 如何使用Sinon创建阻止实际函数执行的测试替身
- 什么'这个异步JavaScript函数的单元测试是错误的(通过Mocha/Sinon)
- 如何用Sinon.js监视与被测函数在同一js文件中的函数
- 我如何使用sinon存根函数为neo4j Thingdom模块
- 用sinon监视Date构造函数
- 当断言函数调用时,chaispy不能识别Sinon存根函数
- 使用Sinon模拟require()'d函数
- 如何在后续调用sinon.js stub时使用不同的函数