Angularでエンドツーエンドのテストを作成していますが、別のDOM要素との関係でDOM要素の位置を確認したいと思います。幸い、Angular E2E DSLには、jQueryのoffset()メソッド用のパススルーメソッドがあります。私のユースケースに最適です!
ただし、このメソッドが返すオブジェクトの使用方法がわかりません。offset()を呼び出すと、プロパティがtopとleftのオブジェクトが返されます。テストでこれらのプロパティにアクセスしようとすると、Angularは文句を言います。
このコードはうまく機能します:
expect(element("#anID").offset()).toEqual({"top":100,"left":100});
このコードは機能せず、エラーをスローします。
expect(element("#anID").offset().top).toEqual(100);
TypeError: Cannot read property 'name' of undefined
at Object.angular.scenario.matcher.(anonymous function) (http://localhost:8000/test/angular/angular-scenario.js:23994:41)
at Object.executeStatement (http://localhost:8000/test/angular/angular-scenario.js:23960:30)
at Object.chain.(anonymous function) [as toEqual] (http://localhost:8000/test/angular/angular-scenario.js:23968:37)
at Object.<anonymous> (http://localhost:8000/test/E2E-scenarios.js:78:53)
offset()からの戻り値を使用して、おおよそ次のような期待値を作成するにはどうすればよいですか。
expect(element("#anID").scrollTop() - element("#anotherID").offset().top).toEqual(100);
アップデート
Josh David Millerと行ったり来たりした後、私の本当の質問は、expect()呼び出しの外でangular.scenario.Futureオブジェクトの値を取得して、他の期待の基礎として使用できるようにする方法です。 ?