使用Jasmine进行AngularJS测试:检查$window.off()
AngularJS testing with Jasmine: Check $window.off()
如何检查$window.off()是否在$scope.$destroy()上被调用。$window是angular.element。
代码示例:
...
$scope.$on('$destroy', function(){
$window.off('event name');
});
...
测试示例:
it('should unbind all events from $window object', function () {
spyOn($window, 'off').and.callThrough();
$scope.$destroy();
expect($window.off).toHaveBeenCalled();
});
结果:Error: Expected spy off已被调用。有什么建议吗?谢谢!
试试这个
var rootScope ;
beforeEach(inject(function($rootScope))){
rootScope = $rootScope;
}
it('should unbind all events from $window object', function () {
spyOn($window, 'off').and.callThrough();
$rootScope.$broadcast("$destroy", args);
expect($window.off).toHaveBeenCalled();
});
这实际上是一个jQuery函数,所以您需要将spy应用到初始化jQuery的任何地方。$window可以保留,因为它是附加函数的元素,例如:
it('should unbind all events from $window object', function () {
spyOn(angular.element.prototype, 'off').and.callThrough();
$rootScope.$broadcast('$destroy', args);
expect($window.off).toHaveBeenCalled();
});
我可能应该补充一些jQuery库添加了一大堆自己的事件监听器,在这种情况下,你想确保你得到最近的事件后,你初始化和添加自己的:
expect($el.off.calls.mostRecent().args).toContain('click', jasmine.any(Function));
相关文章:
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 直接下载文件,而不是从window.open(url)
- $window.ga在AngularJS事件中未定义
- 如何将PDF作为二进制文件传递到window.open()
- window.onload没有'无法在Android WebView中工作
- window.location替换并传递URL历史记录条目中的变量
- window.on.scroll事件未启动
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 为什么window.open不打开一个以变量形式给出的链接
- window.location使用jquery mobile实现chrome跳转
- window.opener.document在ie中不起作用
- window.onpopstate不工作;当我导航回页面时,不会发生任何事情
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 通过window.opener将弹出窗口中的值传递给父窗口
- $(document).height和$(window).heaght都返回相同的值-使用的是正确的doctype
- 如何在`window.open`之后执行回调
- Windows.Open 在 window.Location 工作时不起作用
- javascript window.open将无法在Chrome控制台上工作
- $(window).height() inside iframe?
- 使用Jasmine进行AngularJS测试:检查$window.off()