如何在选择框中选择一个或多个项目

Using JQLite How to select an item or items in a select box

本文关键字:选择 一个 项目      更新时间:2023-09-26

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

我的列表有项目["banana", "apple", "orange"]。

我试着直接设置值:

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("banana").triggerHandler('change');只要期权的价值是香蕉,就可以正常工作。如果你没有在ng-options中指定轨道,angular创建的默认值将是'string:'+<option label>,所以sourceList.val('string:banana').triggerHandler('change');应该可以做到。