当我有一个使用控制器的Angular指令时,我已经能够在我的测试中访问指令的范围:
element = angular.element('<my-directive></my-directive>');
element = $compile(element)($rootScope);
$rootScope.$digest();
scope = element.scope();
这使我能够设置/获取范围属性并直接调用由指令控制器定义的函数。
然而,只要我将jQuery引入项目(我想要使用的另一个依赖项所需),这就停止了工作。特别是在测试中element.scope()
正在返回undefined
。使用开发工具我可以看到当应用程序正在运行时不是这种情况 - 即我可以执行$('.blah').scope()
并获得非undefined
值。
任何人都知道为什么这不起作用?我已经将jQuery添加到我的 karma.conf.js (我正在使用Yeoman Angular生成器),其顺序与HTML文件中包含的顺序相同。
答案 0 :(得分:1)
我发现了问题。我在PhantomJS中运行我的测试并且正在使用jQuery 2.0.3。降级到jQuery 1.10.2使一切都恢复正常。我很惊讶PhantomJS会出现兼容性问题,但这似乎是问题所在。