2

angularjs アプリケーションを E2E テストしようとしています。API からの項目が入力された select2 選択ボックスがあります。この select2 選択ボックスには、検索に追加されるフィルターのリストがあります。

<input id="filter-select2" ui-select2="dataArray" ng-model="selected"/> 

私が抱えている問題は、私が行っている E2E テストで選択ボックスを開けないように見えることです。アプリケーションをロードする$('#s2id_filter-select2').select2('open');と、Chrome Javascript コンソールで select2 選択ボックスを開くことができます。私もできますangular.element('#s2id_filter-select2').select2('open');

しかし、E2E テスト自体でこれを実行しようとすると、要素に.select2().

element('#s2id_filter-select2').select2('open');私は両方を試しました

element('#s2id_filter-select2').query(function (e, done) {
    e.select2('open');
    done();
});

E2Eテストで。.fadeOut()後者の例 ( element().query())を呼び出すことはできますが、 を呼び出すことはできません.select2()

E2E テスト構成に select2.js と angularui.js (angular-ui のディレクティブを使用しています) を含めてみましたが、何も変わりません。

select2 などの jQuery ライブラリを E2E テストから呼び出すことに成功した人はいますか?

また、select2ボックスをスキップすること、つまり「選択された」モデルを直接設定することも考えました。これは、フィルター選択時にアプリケーションを更新する $watch があるためですが、モデルを設定する方法が見つからないようですテスト自体を通して。

e2e 構成は次のファイルを使用しています。

files = [
    ANGULAR_SCENARIO,
    ANGULAR_SCENARIO_ADAPTER,
    'tests/students/scenarios/*.scenario.js',
    'dev/students/js/script.js',
    'dev/students/js/*.js'
];

tests/ および dev/ ファイルの前後に select2、jQuery、angular-ui を含めてみました。

編集:選択したモデルをinput('selected').enter('sth');で設定できますが、モデルとして設定できないようです。これにはカスタム DSL を書かなければならないのでしょうか?

4

1 に答える 1

1

実際、カスタム DSL を使用して、angular e2e テストで select2 ボックスを開くことができます。次のコード ブロックの功績は認めません。次の場所で見つけました: How to execute jQuery from Angular e2e test scope?

追加することにより:

angular.scenario.dsl('jQueryFunction', function() {
    return function(selector, functionName /*, args */) {
        var args = Array.prototype.slice.call(arguments, 2);
        return this.addFutureAction(functionName, function($window, $document, done) {
            var $ = $window.$; // jQuery inside the iframe
            var elem = $(selector);
            if (!elem.length) {
                return done('Selector ' + selector + ' did not match any elements.');
            }
            done(null, elem[functionName].apply(elem, args));
        });
    };
});

e2e テスト ファイルの先頭に追加すると、次のように select2 ボックスを開くことができます。

jQueryFunction('#s2id_roleselect', 'select2', 'open');

roleselect を自分の ID に置き換えます。すべての功績は、DSL を提供したユーザー Jeroen V. に帰属します。

于 2013-06-07T18:51:53.083 に答える