2015-07-20 116 views
2

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

我的清单有物品[“香蕉”,“苹果”,“橙”]。

我试过直接设置值:

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()等于[]。

+0

你能看看这个http://stackoverflow.com/a/22333324/2435473 –

+0

我不认为这解决了我的问题。我实际上已经使用点击事件。问题是我无法通过jQlite获取select元素的选项。 – Corey

+0

你能提供你的指令吗? –

回答

0

晚会有点晚,但我会把它留在这里给其他有同样问题的人。
我不知道你是如何构建选择框的选项,但sourceList.val("banana").triggerHandler('change'); 应该工作正常,只要该选项的值是香蕉。如果您尚未在ng选项中指定轨道,则角度创建的默认值将为'string:'+<option label>,因此sourceList.val('string:banana').triggerHandler('change');应该执行此操作。

相关问题