Я создаю небольшую тестовую среду, которая использует шаблон модуля 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();
Однако, если я попытаюсь расширить модуль тестера . js
в другом файле модуля, я не могу ссылаться на объект Tester. Tester-Extension.js
расширяет модуль Tester, определенный в 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 внутри Tester-Extension.js
, но могу в tester.js
?
Что такое #import macro doing?