我有一个部分使用 Angular UI http://angular-ui.github.io/的 select2 元素
我遇到的问题是该元素是必需的,尽管我已通过以下代码成功设置了该字段,但未删除所需的属性,因为由于外部更改,Angular 的模型不能更新,我不知道如何要么提供一个 $scope.apply() 要么利用 Angular 的另一个函数来继续测试。
首先允许直接运行 jQuery 函数:(取自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));
});
};
});
然后更改字段值:
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');
请注意,并非所有这些功能都需要反映对 ui 的更改,只是我用来尝试使其正常工作的所有功能......