baa*_*der 7 javascript ui-automation ios ios-ui-automation
我正在制作一个小型测试框架,它使用JavaScript模块模式在iOS上进行UI自动化测试.但是,基于#import和扩展模块,我似乎得到了奇怪的结果.
我有一个基本测试模块叫Tester-Module.js:
(function() {
var Tester = this.Tester = {};
Tester.setUp = function() {
UIALogger.logMessage('Regular SetUp()');
}
}).call(this);
Run Code Online (Sandbox Code Playgroud)
如果我在我的测试用例中导入此模块,它可以正常工作.这是测试文件tester.js(tester.js我在Instruments中导入的文件):
#import "./Tester-Module.js"
// Prints 'Regular SetUp()'
Tester.setUp();
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试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()');
}
Run Code Online (Sandbox Code Playgroud)
更新的测试用例文件tester.js:
#import "./Tester-Extension.js"
// Exception is thrown before this
Tester.setUp();
Run Code Online (Sandbox Code Playgroud)
我希望相关的问题是:
为什么我不能在里面引用Tester对象Tester-Extension.js,但可以在tester.js?
#import宏在做什么?
经过一些更多的搜索和测试后,看起来#import在UI自动化框架中不支持在每个模块文件中使用 - 类似于Node.js中的require.
解决方法是包含一个头文件,该文件导入每个模块,然后只在测试用例中导入它.使用上面的示例,头文件看起来像:
// Tester-Header.js
#import "./Tester-Module.js"
#import "./Tester-Extension.js"
Run Code Online (Sandbox Code Playgroud)
而测试文件只会导入头文件,如下所示:
#import "./Tester-Header.js"
// Prints "Overwritten SetUp()"
Tester.setUp();
Run Code Online (Sandbox Code Playgroud)
在五月母亲UI BDD框架具有的更广泛的实施例的头文件和导入头文件到一个测试文件.披露:我编写了框架并最初问了这个问题,以使框架更加模块化.
| 归档时间: |
|
| 查看次数: |
4706 次 |
| 最近记录: |