2011-09-23 28 views
7

Tôi đang tạo một khung thử nghiệm nhỏ sử dụng mẫu mô-đun JavaScript cho thử nghiệm Tự động hóa giao diện người dùng trên iOS. Tuy nhiên, tôi dường như nhận được kết quả kỳ quặc dựa trên #import và mở rộng mô-đun.#import hoạt động như thế nào trong Tự động hóa Giao diện người dùng của iOS?

tôi có các mô-đun kiểm tra cơ sở gọi là Tester-Module.js:

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

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

Nếu tôi import module này trong trường hợp thử nghiệm của tôi, nó hoạt động tốt. Dưới đây là file test tester.js (tester.js là file tôi nhập khẩu trong Instruments):

#import "./Tester-Module.js" 

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

Tuy nhiên, nếu tôi cố gắng mở rộng các mô-đun Tester-Module.js trong một tập tin mô-đun, tôi không thể tham chiếu đến các đối tượng Tester. Tester-Extension.js mở rộng các mô-đun Tester quy định tại Tester-Module.js:

#import "./Tester-Module.js" 

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

Và cập nhật kiểm tra trường hợp tập tin tester.js:

#import "./Tester-Extension.js" 

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

tôi câu hỏi liên quan hy vọng là:

  • Tại sao tôi không thể tham chiếu Đối tượng thử nghiệm bên trong Tester-Extension.js, nhưng có thể trong tester.js?

  • Macro #import làm gì?

Trả lời

5

Sau một số tìm kiếm và thử nghiệm khác, có vẻ như sử dụng #import trong mỗi tệp mô-đun - tương tự như yêu cầu trong Node.js - không được hỗ trợ với khung Tự động hóa giao diện người dùng.

Công việc xung quanh là bao gồm tệp tiêu đề nhập mọi mô-đun và sau đó chỉ nhập vào trường hợp thử nghiệm. Sử dụng ví dụ trên, các tập tin header sẽ trông như thế:

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

Và file test sẽ chỉ đơn giản là nhập khẩu các tập tin tiêu đề như vậy:

#import "./Tester-Header.js" 

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

Khung Mother May UI BDD có một ví dụ bao quát hơn của một header file và nhập tệp tiêu đề vào một test file. Tiết lộ: Tôi đã viết khuôn khổ và ban đầu được hỏi câu hỏi này để làm cho khuôn khổ thêm mô-đun.

Các vấn đề liên quan