iOS での UI オートメーション テスト用の JavaScript モジュール パターンを使用する小さなテスト フレームワークを作成しています。ただし、 #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 モジュールを拡張します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 マクロは何をしていますか?