3

E2E テストを作成しようとしている複数値セレクターがあります。を使用しても問題なく動作しますが、複数の値を選択select(name).optionしようとする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ないのかを理解するのを手伝ってくれれば幸いです。(同じことを達成するために使用できる他の手法があることは知っていますがselect、製品コードの実際にはng-change、回避策を試しても起動しない属性もあります)。

ありがとう、

グレアム・ルートヴィヒ。

4

2 に答える 2

1

が機能しない理由をまだ理解しようとしてselect(name).option()いますが、次の変更により例を機能させることができます。

  1. angular-scenario.js の前に angular.js を含める
  2. ngResource の依存関係を取り除きます - ここでは必要ありません
  3. タグ<span>{{model.selectedItems}}</span>の後に<select>付けて、選択したものを確認します。

第二弾が分かり次第更新します。

于 2013-01-10T22:21:19.803 に答える