【发布时间】:2016-11-24 16:19:02
【问题描述】:
我想监视一个用作点击处理程序的函数。该函数在闭包的构造函数中定义。
var viewModel = function(){
var viewModel = function(){
var _this = this;
_this.internalClickHandler = function(){
console.log('I handled a click');
}
}
return viewModel;
}();
var testViewModel = new viewModel();
var theSpy = spyOn(testViewModel, 'internalClickHandler');
尽管 Jasmine 很高兴 'internalClickHandler' 存在并创建了间谍,但它永远不会被调用。事实上,原来的函数(internalClickHandler)被调用了。
我创建了examples in codepen.io 来显示问题。失败的测试是试图监视构造函数中的函数。
我的事件处理程序需要在构造函数中,因为它需要访问对象的实例,并且我确实想测试是否触发了正确的处理程序,而不仅仅是触发了点击事件。
任何帮助都会得到极大的欢迎。谢谢
【问题讨论】:
标签: events constructor jasmine spy