2013-12-16 19 views
25

Birim testlerinde yaptığınız gibi iletki testlerinizdeki açısal erişime erişmek mümkün mü?Açısal İç İletken Testine Erişme

Kullanım durumu, metni dönüştüren bir hizmetim var ve bu sınama, gerçek sınama betiğindeki bazı verileri dönüştürmek için bu hizmete erişmek istiyorum. İletkende addMockModule yöntemi olduğunu biliyorum, ancak bu amaçla nasıl kullanılacağını anlayamıyorum.

Herhangi bir yardım için minnettar olurum!

cevap

36

Assess() adında bir işlev var. Dom bir eleman bulun ve sonra ifadeyi çalıştırın. Örneğin,

. Eğer (Bazı denetim eklemek altında) http://angularjs.org/ web sitesinde todos sayısını saymak isterseniz, bunu:

Açık eleman kaşif iletki içinde

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

Size 2

vermelidir https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

: Ayrıca bakınız örnek 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); 
}); 

kullanabilirsiniz 0

+0

Anladım, executeAsyncScript'i denememe izin verin. Birincisi, kapsamdaki basit şeylerin daha fazla yürütülmesi için görünüyor. – wlingke

+1

github üzerindeki iletki-buluşma tarafından sağlanan örnekler mükemmel, bu için çok teşekkürler. – FireDragon

+3

2. varyantın aslında ** yeni bir enjektör ** oluşturduğuna dikkat edin. Bu gibi hatalara yol açabilir: 'Bilinmeyen sağlayıcı: $ rootElementProvider' ' 'angular.element ([DOM öğesi]) kullanın. Enjektör(). ('MyService');' bir kök DOM öğesinde (burada Mevcut enjektöre ulaşmak için ng-app ayarlanır. – Vladius

İlgili konular