Ho un parziale con un elemento select2 utilizzando angolare UI http://angular-ui.github.io/Angularjs E2E Test con angolare-UI Select2 elemento
L'edizione che sto funzionando in è che è richiesto l'elemento e anche se ho impostato con successo il campo attraverso la seguendo il codice, l'attributo richiesto non viene rimosso poiché il modello di Angular non deve essere aggiornato a causa delle modifiche esterne e non sono sicuro di come fornire a $ scope.apply() o utilizzare un'altra funzione di Angular per continuare il test.
primo a consentire funzioni dirette jQuery per eseguire: (tratti da 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));
});
};
});
Poi per modificare il valore del campo:
jQueryFunction('#s2id_autogen1', 'select2', 'open');
jQueryFunction('#s2id_autogen1', 'select2', "val", "US");
jQueryFunction('#s2id_autogen1', 'select2', 'data', {id: "US", text: "United States"});
jQueryFunction('.select2-results li:eq(3)', 'click');
jQueryFunction('#s2id_autogen1', 'trigger', 'change');
jQueryFunction('#s2id_autogen1', 'select2', 'close');
input('request._countrySelection').enter('US');
Nota che non tutti quelle funzioni sono necessari per rifletti le modifiche apportate all'interfaccia utente, semplicemente tutto ciò che ho utilizzato per provare a farlo funzionare ...
se l'elemento ha attributo id quindi il div creato da select2 saranno s2id_ –