Angular/Jquery选择器在运行Protractor时会导致错误

Lia*_*nat 2 jquery highcharts angularjs karma-runner protractor

在Angular Project上运行Karma +量角器时遇到错误.我尝试了几种不同的方法来选择元素,它们都会导致错误.

我正在寻找一种方法使其工作/在运行测试时忽略此功能.

这是测试失败的行:

var chart = angular.element(document.querySelector("#chart2")).highcharts();
Run Code Online (Sandbox Code Playgroud)

这一行导致:

TypeError:'undefined'不是函数(计算'angular.element(document.querySelector("#chart2")).highcharts()')

我尝试了几种不同的方法:

我将行更改为:

var chart = $("#chart2").highcharts();
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

ReferenceError:找不到变量:$

我也尝试将此行更改为:

var chart = angular.element("#chart2").highcharts();
Run Code Online (Sandbox Code Playgroud)

然后我得到了以下错误:

错误:[jqLit​​e:nosel] jqLit​​e不支持通过选择器查找元素!见:http : //docs.angularjs.org/api/angular.element http://errors.angularjs.org/1.2.4/jqLit​​e/nosel

重要的是所有3个选项都是有角度的.

我正在寻找一种方法使其工作/在运行测试时忽略此功能.

任何可能有用的想法?

jch*_*n86 5

如果你有jQuery可用,这些选项可能会有效.看起来您的测试使用的是角度内置的jqLit​​e,其中这些功能不可用.

当应用程序被引导时,Angular可以使用jQuery,如果它存在于您的应用程序中.如果你的脚本路径中没有jQuery,Angular会回退到我们称之为jQLite的jQuery子集的实现.- https://docs.angularjs.org/api/ng/function/angular.element

也许尝试将jQuery添加到您的业力配置?在角度之前加载jQuery应该工作.

例如在你的业力配置中:

files: [
'libs/jquery.js',
'libs/angular.js'
]
Run Code Online (Sandbox Code Playgroud)