大佬教程收集整理的这篇文章主要介绍了您如何模拟指令以启用更高级别指令的单元测试?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
由于指令注册的实现,似乎无法用模拟指令替换现有指令。
但是,您有几种方法可以对高层指令进行单元测试,而不会受到较低层指令的干扰:
1)不要在 使用较低级别的指令:
如果您的下级指令未由上级指令添加,则在单元测试中,请使用仅具有higer-level-directive的模板:
var HTML = "<div my-higher-level-directive></div>";
$compile(HTML)(scope);
因此,较低级别的指令不会产生干扰。
2)在指令的实现中 :
您可以通过服务提供较低级别的指令链接功能:
angular.module("myModule").directive("myLowerLevelDirective", function(myService) {
return {
link: myService.lowerLevelDirectivelinkingFunction
}
});
然后,您可以在单元测试中模拟此服务,以避免干扰更高级别的指令。如果需要,该服务甚至可以提供整个指令对象。
3)您可以使用 覆盖下级 :
angular.module("myModule").directive("myLowerLevelDirective", function(myService) {
return {
priority: 100000,
terminal: true,
link: function() {
// do nothing
}
}
});
使用终端选项和更高的优先级,将不会执行您真正的较低级别的指令。指令doc中的更多信息。
在此Plunker中了解其工作原理。
在我们的应用程序中,我们有几层嵌套指令。我正在尝试为顶级指令编写一些单元测试。我嘲笑了指令本身需要的东西,但是现在我遇到了较低级别指令的错误。在针对顶级指令的单元测试中,我不想担心较低级指令中发生的事情。我只想模拟较低级别的指令,并且基本上不执行任何操作,因此我可以单独测试顶层指令。
我尝试通过执行以下操作来覆盖指令定义:
angular.module("myModule").directive("myLowerLevelDirective",function() {
return {
link: function(scope,element,attrs) {
//do nothing
}
}
});
但是,这不会覆盖它,它只是在real指令之外运行它。如何在我对顶级指令的单元测试中阻止这些较低级别的指令执行任何操作?
以上是大佬教程为你收集整理的您如何模拟指令以启用更高级别指令的单元测试?全部内容,希望文章能够帮你解决您如何模拟指令以启用更高级别指令的单元测试?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。