2011-09-23 21 views
7

iOS'ta UI Otomasyon testi için JavaScript modülü modelini kullanan küçük bir test çerçevesi yapıyorum. Ancak, #import ve genişletme modülleri dayalı garip sonuçlar alıyorum.#import iOS U UI Otomasyonunda nasıl çalışır?

Ben Tester-Module.js denilen taban testi modülü vardır: Ben benim test durumda bu modülü varsa

(function() { 
    var Tester = this.Tester = {}; 

    Tester.setUp = function() { 
    UIALogger.logMessage('Regular SetUp()'); 
    } 
}).call(this); 

, iyi çalışıyor. İşte (tester.js Ben Instruments içe dosyasıdır) testi dosyası tester.js var:

#import "./Tester-Module.js" 

// Prints 'Regular SetUp()' 
Tester.setUp(); 

Ancak, ben başka modül dosyasında Tester-Module.js modülünü genişletmeye çalışırsanız, ben Tester nesneyi başvuramaz.

#import "./Tester-Module.js" 

// Outputs: 
// Exception raised while running script: 
// ReferenceError: Can't find variable: Tester\n 
Tester.setUp = function() { 
    UIALogger.logMessage('Overwritten SetUp()'); 
} 

Ve güncellenmiş Test dava dosyasını tester.js:

#import "./Tester-Extension.js" 

// Exception is thrown before this 
Tester.setUp(); 

My umarım ilgili sorular

şunlardır:

  • Neden başvuramaz Tester-Extension.jsTester-Module.js tanımlanan Test modülü uzatır Tester-Extension.js içinde test objesi, ancak tester.js içinde olabilir?

  • #import makrosu ne yapıyor? Node.js içinde gerektirecek benzer - - UI Otomasyon framework ile desteklenmez

cevap

5

biraz daha arama ve testlerden sonra, her modül dosyasında #import kullanmak gibi görünüyor.

Buradaki çalışma, her bir modülü içe aktaran bir başlık dosyasını içerecek ve sonra bunu yalnızca deneme durumunda içe aktaracaktır. Yukarıdaki örneğe başlık dosyası gibi görünecektir:

// Tester-Header.js 
#import "./Tester-Module.js" 
#import "./Tester-Extension.js" 

Ve Test dosyası basitçe şöyle başlık dosyasını içe olacaktır:

#import "./Tester-Header.js" 

// Prints "Overwritten SetUp()" 
Tester.setUp(); 

Mother May UI BDD çerçeve bir daha kapsamlı bir örnek vardır header file ve başlık dosyasını test file'a aktarın. Açıklama: Çerçeveyi yazdım ve çerçeveyi daha modüler hale getirmek için bu soruyu orijinal olarak sordu.