代码之家  ›  专栏  ›  技术社区  ›  Rob Fletcher

加载jQuery测试Angular指令作用域

  •  1
  • Rob Fletcher  · 技术社区  · 12 年前

    当我有一个使用控制器的Angular指令时,我可以通过这样做来访问该指令在测试中的作用域:

    element = angular.element('<my-directive></my-directive>');
    element = $compile(element)($rootScope);
    $rootScope.$digest();
    
    scope = element.scope();
    

    这使我能够设置/获取范围财产,并直接调用指令控制器定义的函数。

    然而,当我将jQuery引入到项目中(我想使用的另一个依赖项需要它)时,它就停止了工作。具体在测试中 element.scope() 正在返回 undefined 。使用开发工具,我可以看到,当应用程序真正运行时,情况并非如此,即我可以 $('.blah').scope() 并获得一个非- 未定义 价值

    有人知道为什么这不起作用吗?我已将jQuery添加到我的 karma.conf.js公司 (我使用的是Yeoman Angular生成器),其顺序与HTML文件中包含的顺序相同。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Rob Fletcher    12 年前

    我发现了问题。我正在PhantomJS中运行测试,并且正在引入jQuery 2.0.3。降级到jQuery 1.10.2使一切恢复正常。我有点惊讶PhantomJS会出现兼容性问题,但这似乎是问题所在。

    推荐文章