2

単体テストの選択ボックスで 1 つ以上の項目を強調表示しようとしています。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() は [] に等しくなります。

4

1 に答える 1

0

パーティーには少し遅れましたが、同じ問題を抱えている他の人のためにここに残しておきます.
選択ボックスのオプションをどのように構築したかはわかりませんが、sourceList.val("banana").triggerHandler('change'); オプションの値がバナナである限り、正常に機能するはずです。ng-options でトラックを指定していない場合は、angular が作成するデフォルト値でうまくいく'string:'+<option label>はずsourceList.val('string:banana').triggerHandler('change');です。

于 2016-03-30T19:29:58.883 に答える