web-dev-qa-db-ja.com

分度器テスト内でAngularにアクセスする

単体テストで行うように、分度器テスト内でangularにアクセスできますか?

使用例は、テキストを変換するサービスがあり、そのサービスにアクセスして実際のテストスクリプト内のデータを変換することです。分度器にaddMockModuleメソッドがあることは知っていますが、この目的のためにそれを使用する方法がわかりません。

助けていただければ幸いです!

28
wlingke

Evaluate()という関数があります。 DOMで要素を見つけて、式を実行します。

例えば。 http://angularjs.org/ Webサイト(Add Some Controlの下)でTodoの数をカウントする場合は、次のようにします。

分度器で要素エクスプローラーを開きます

./node_modules/protractor/bin/elementexplorer.js
browser.get('http://angularjs.org/')
element(by.model('todoText')).evaluate('todos.length').
  then(function(count) {
    console.log(count)
  });

それはあなたに2を与える必要があります

ExecuteAsyncScriptを使用することもできます

browser.executeAsyncScript(function(callback) {
  // Here we use document.body, but your app may live under a different
  // element.
  var service = angular.element(document.body)
      .injector()
      .get('myService');
  service.query({}, function(data) {
    callback(data);
  });
}).then(function (output) {
  console.log(output);
});

例を参照してください: https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

37
Andres D