Я делаю небольшую тестовую среду, которая использует шаблон модуля JavaScript для тестирования автоматизации пользовательского интерфейса на iOS. Тем не менее, я, кажется, получаю странные результаты на основе # import и расширенных модулей.
У меня есть базовый тестовый модуль под названием Tester-Module.js
:
(function() {
var Tester = this.Tester = {};
Tester.setUp = function() {
UIALogger.logMessage('Regular SetUp()');
}
}).call(this);
Если я импортирую этот модуль в моем тестовом примере, он работает нормально. Вот тестовый файл tester.js
(tester.js
- это файл, который я импортирую в Instruments):
#import "./Tester-Module.js"
// Prints 'Regular SetUp()'
Tester.setUp();
Однако, если я пытаюсь расширить модуль Tester-Module.js
в другом файле модуля, я не могу ссылаться на объект Tester. Tester-Extension.js
расширяет модуль тестера, определенный в 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()');
}
И обновленный файл теста tester.js
:
#import "./Tester-Extension.js"
// Exception is thrown before this
Tester.setUp();
Мои, я надеюсь, связанные вопросы:
Почему я не могу сослаться на объект Тестера внутри Tester-Extension.js
, но могу в tester.js
?
Что делает макрос #import?