2013-01-10 78 views
3

我有一個多值選擇器,我正在嘗試編寫一個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屬性,當我嘗試解決方法時,該屬性不會觸發)。

謝謝,

格雷姆路德維希。

回答

1

我仍然試圖找出爲什麼select(name).option()不工作,但我可以讓你通過例如以下修改工作:

  1. 包括前角scenario.js angular.js
  2. 取出ngResource依賴 - 你不需要它
  3. <span>{{model.selectedItems}}</span>放在<select>標籤後面,看看你選擇了什麼。

我會更新一次,我找出第二部分。

0

不應該select("model.selectedItems").option("Product1");select("#a_selector").option("Product1");而不是?