Javascript 使用JQLite如何在选择框中选择一个或多个项目

Javascript 使用JQLite如何在选择框中选择一个或多个项目,javascript,jquery,angularjs,karma-jasmine,jqlite,Javascript,Jquery,Angularjs,Karma Jasmine,Jqlite,我试图在单元测试中突出显示选择框中的一个或多个项目。我正在使用Karma、Jasmine和PhantomJS、AngularJS、JQLite、CoffeeScript 我的清单上有[“香蕉”、“苹果”、“橘子”] 我尝试直接设置值: sourceList = element.find('select').eq(1) sourceList.val("[banana]").triggerHandler('change'); // Or sourceList.val("banana").trigge

我试图在单元测试中突出显示选择框中的一个或多个项目。我正在使用Karma、Jasmine和PhantomJS、AngularJS、JQLite、CoffeeScript

我的清单上有[“香蕉”、“苹果”、“橘子”]

我尝试直接设置值:

sourceList = element.find('select').eq(1)
sourceList.val("[banana]").triggerHandler('change');
// Or
sourceList.val("banana").triggerHandler('change');
当我得到sourceList.val()时,它没有被设置

我尝试触发事件来选择它。注意,我无法执行“单击”事件,因为我有另一个单击触发的事件

sourceList.find('option').eq(0).triggerHandler("active");
sourceList.find('option').eq(0).triggerHandler("focus");
sourceList.find('option').eq(0).triggerHandler("drag");
sourceList.find('option').eq(0).triggerHandler("dragLeave");
我尝试使用
selectedIndex

sourceList.selectedIndex = 1
这些似乎都没有突出显示或选择项目。我没有主意了。有人做到了吗

以下是我尝试测试的指令的方法:

// Clicks on the add button. Should take all items highlighted and move them over
   $scope.add = function(){
        var sourceList = $element.find('select').eq(1);
        angular.forEach(sourceList.val(), function(val, index){
             $scope.selected.push({
                    text: val
             });
         });
         checkListDupes();
     };

当我在浏览器中手动执行此操作时,此代码可以工作,但在单击“添加”按钮之前,我似乎无法让我的测试突出显示“选择”框中的某些项目。因此,当这段代码执行时,sourceList.val()等于[]。

对聚会来说有点晚了,但我会把它留给其他有同样问题的人。
我不知道您是如何为选择框构建选项的,但是
sourceList.val(“香蕉”).triggerHandler(“更改”)

只要选项的值是香蕉,就可以正常工作。如果您没有在ng选项上指定track by,angular创建的默认值将是
'string:'+
so
sourceList.val('string:banana').triggerHandler('change')应该可以解决问题。

你能看看这个吗?我认为这并不能解决我的问题。实际上,我让它处理点击事件。问题是我无法通过jQlite获取select元素的选项进行选择。您能提供您的指令吗?很遗憾,我无法共享整个指令,但我添加了我正在使用的特定方法。