2013-12-16 29 views
25

क्या आपके प्रोटैक्टर परीक्षणों में कोणीय तक पहुंचना संभव है जैसे आप यूनिट परीक्षण में करते हैं?प्रोटैक्टर परीक्षण के अंदर कोणीय तक पहुंच

केस का उपयोग यह है कि मेरे पास एक ऐसी सेवा है जो पाठ को बदलती है और मैं वास्तविक डेटा स्क्रिप्ट के भीतर कुछ डेटा को बदलने के लिए उस सेवा तक पहुंच बनाना चाहता हूं। मुझे पता है कि प्रोजेक्टर में addMockModule विधि है लेकिन मैं इस उद्देश्य के लिए इसका उपयोग कैसे कर सकता हूं इसका पता नहीं लगा सकता।

किसी भी मदद की सराहना करेंगे!

उत्तर

36

मूल्यांकन() नामक एक फ़ंक्शन है। डोम में एक तत्व खोजें और फिर अभिव्यक्ति चलाएं।

उदाहरण के लिए

। आप 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

देना चाहिए तुम भी 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

+0

समझ गया, मुझे executeAsyncScript निष्पादित करने दें। पहली बार एक दायरे पर सरल चीजों के अधिक निष्पादन के लिए प्रतीत होता है। – wlingke

+1

गीथूब पर प्रोटैक्टर-मेटुप द्वारा प्रदान किए गए उदाहरण उत्कृष्ट हैं, इसके लिए बहुत बहुत धन्यवाद। – FireDragon

+3

ध्यान दें कि दूसरा संस्करण वास्तव में ** ** एक नया इंजेक्टर बनाता है। इससे त्रुटियों का कारण बन सकता है: 'अज्ञात प्रदाता: $ rootElementProvider' 'angular.element ([DOM तत्व]) का उपयोग करें। इंजेक्टर()। (' MyService ') प्राप्त करें;' रूट रूट डीओएम तत्व (जहां पर एनजी-ऐप सेट किया गया है) मौजूदा इंजेक्टर प्राप्त करने के लिए। – Vladius

संबंधित मुद्दे