2015-07-20 143 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');應該執行此操作。

相關問題