我有一個多值選擇器,我正在嘗試編寫一個E2E測試。使用select(name).option可以正常工作,但是當我嘗試使用select(name).options來選擇多個值時,它不起作用。在角度E2E測試中使用select(name).options
我試圖把一些代碼放在一起來演示,但無法讓它工作。
HTML:
<html lang="en">
<head>
<title>End2end Test Runner</title>
<script src="http://code.angularjs.org/1.0.1/angular-scenario-1.0.1.js"
ng-autotest>
</script>
</head>
<body ng-app="MyApp">
<div ng-controller="MyAppCtrl">
{{model.exampleValue}}
<select id="a_selector"
ng-model="model.selectedItems"
ng-options="item.name for item in model.items"
multiple="multiple">
</select>
</div>
</body>
使用Javascript:
var app = angular.module('MyApp', ['ngResource'])
app.controller('MyAppCtrl', function($scope) {
$scope.model = {};
$scope.model.exampleValue="an example value";
$scope.model.items = [{"name": "Product1"}, {"name": "Product2"}];
});
app.config(['$routeProvider', function ($routeProvider, $scope) {
$routeProvider.when('/', {controller:MyAppCtrl});
}]);
describe('my app', function() {
it('should display the home page', function() {
browser().navigateTo('/');
// this should work (when I can fix this code!)
select("model.selectedItems").option("Product1");
expect(element("#a_selector option:selected").count()).toEqual(1)
// this doesn't, nothing is selected
select("model.selectedItems").options("Product1", "Product2");
expect(element("#a_selector option:selected").count()).toEqual(2)
});
});
線
select("model.selectedItems").option("Product1");
失敗,錯誤消息:
Selector select[ng\:model="model.selectedItems"] did not match any elements.
如果有人能夠(1)幫助我確定上述代碼根本無法工作,並且(2)幫助我理解select(name).options不起作用的原因,我將不勝感激。 (我知道還有其他技術可以用來實現相同的功能,但生產代碼中的真實選擇也具有ng-change屬性,當我嘗試解決方法時,該屬性不會觸發)。
謝謝,
格雷姆路德維希。