2013-12-16 10 views
25

単体テストのように分度器テストの角度にアクセスできますか?角内部の分度器テストへのアクセス

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

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

答えて

36

evaluate()という関数があります。 dom内の要素を見つけて、式を実行します。

たとえば、あなたは(いくつかのコントロールを追加します下)http://angularjs.org/ウェブサイトでドスの数をカウントしたい場合は、次の操作を行います。

オープン要素エクスプローラを分度器で

./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

を与える必要がありますhttps://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

:あなたはまた、例を参照してください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); 
}); 

を使用することができます0

+0

私はexecuteAsyncScriptを試してみましょう。最初のものは、範囲で単純なものをより多く実行するためのものです。 – wlingke

+1

githubの分度器会議で提供されている例が優れています。 – FireDragon

+3

第2変形は実際には**新しいインジェクタを作成することに注意してください。 'Unknown provider:$ rootElementProvider' root.element([DOM要素]).injector()。get( 'myService');' 'ルートDOM要素(ここでは、 ng-appが設定されています)。 – Vladius

関連する問題