Javascript AngularJs+;Jasmine如何测试image.onload激发嵌套方法

Javascript AngularJs+;Jasmine如何测试image.onload激发嵌套方法,javascript,angularjs,unit-testing,angularjs-directive,jasmine,Javascript,Angularjs,Unit Testing,Angularjs Directive,Jasmine,我有一个angularjs指令。Image src绑定到Image.srcmodel。指令监视image.src,并且必须在映像完全加载时激发resizeImage控制器的方法 我想测试调用了resizeImage方法,但由于image.onload回调,我无法监视它 此外,我又面临指令编译问题。我已经在这里解决了这个问题,但是不能强制这个新指令进行工作测试 以下是html代码: 以下是指令代码: angular.module('app',[]) .指令(“imageDirective”,i

我有一个angularjs指令。Image src绑定到
Image.src
model。指令监视
image.src
,并且必须在映像完全加载时激发
resizeImage
控制器的方法

我想测试调用了
resizeImage
方法,但由于
image.onload
回调,我无法监视它

此外,我又面临指令编译问题。我已经在这里解决了这个问题,但是不能强制这个新指令进行工作测试

以下是html代码:


以下是指令代码:

angular.module('app',[])
.指令(“imageDirective”,imageDirective);
函数imageDirective($log){
var imgController=函数($scope,$log){
$scope.image={
src:null
};
this.resizeImage=函数(图像){
$log.info('Runs resizeImage');
};
},
链接=功能(范围、el、属性、imgController){
var imageEl=document.getElementById('image');
作用域$watch('image.src',函数(){
imageEl.onload=函数(){
$log.info('Runs image.onload');
imgController.resizeImage(图像);
};
});
};
返回{
限制:“A”,
链接:链接,
templateUrl:'dir.html',
控制器:imgController
}
}
指令模板:


规格代码:

descripe('带图像加载事件的指令',函数(){
变量$compile、$scope、$templateCache、$document、$log、template、,
html=“”,
dirHtml='';
在每个(模块(“应用”)之前;
beforeach(注入函数($compile、$rootScope、$templateCache、$document){
$document=$document;
$compile=\$compile;
$scope=\$rootScope\$new();
$templateCache=\u$templateCache;
template=$templateCache.put('dir.html',dirHtml);
}));
var createDirective=函数(){
var elm=angular.element(html);
$compile(elm)($scope);
document.body.appendChild(elm[0]);
$scope.$digest();
返回榆树;
};
描述('创建时',函数(){
它('应该呈现预期的输出',函数(){
var元素=createDirective();
expect(element.find('img').length).toBe(1);
document.body.removeChild(元素[0]);
});
});
});

这是我的扑克牌。

那么你的问题是因为不知道如何访问该方法而无法监视该方法,还是因为你在单元测试中从未使用过Imagel.onlaod?@CalebWilliams Imagel.onlaod从未使用过?你喜欢任何解决方案吗?我偶然发现了一个类似的问题,我还没有找到一个可行的答案。@VladPintea仍然没有解决方案