运用D.O.H进行Javascript应用程序测试(二)
来源:互联网 发布:php substr函数的用法 编辑:程序博客网 时间:2024/06/07 16:32
文章“运用D.O.H进行Javascript应用程序测试(一)”使用firebug和Javascript注入技术快速展示了D.O.H的功能和基本用法。主要是:
- 通过
dojo.provide("demo.doh.tests.functions.demoFunctions");
来注册测试代码模块,并在测试代码模块中通过我们熟悉的
//Import in the code being tested.
dojo.require("demo.doh.demoFunctions");
来引入被测试代码模块。
- 通过doh.register(),而不是dojo.declare来定义测试代码模块:
doh.register("demo.doh.tests.functions.demoFunctions", [
function test_alwaysTrue(){
// summary:
// A simple test of the alwaysTrue function
// description:
// A simple test of the alwaysTrue function
doh.assertTrue(demo.doh.demoFunctions.alwaysTrue());
}
]);
但有这样一些问题没有解决:
- doh由谁来引入?在前文中是通过firebug控制台来注入的。
- 测试代码如何被运行起来?在前文中,是通过firebug控制台注入测试代码,并手动执行doh.run()命令来启动测试的。
现在我们来看看常规的开发中应该如何布署测试。
首先我建议你将开发目录设置为类似下面的结构(与测试无关,只不过这里提到了测试,顺便提一下):
几年以前我们开始Java web application开发时,总是将test文件夹与src文件夹平行放置。上面的结构是Spring Roo的风格,现在我更能接受这种目录结构。
首先,注意到util/doh下面的runner.html。该文件为运行测试提供了以下的基础设施:
- 一个图形化的窗口和浏览器环境。这样不仅可以运行跟浏览器窗口有关的测试代码,而且提供了更好的图形化测试报告呈现。
- dojo和doh加载。这样就解决了前面所提到的谁来注入doh的问题。
- 启动测试引擎doh.run()。
现在惟一的问题就是,如何让这个框架运行我们的测试代码?
答案在runner.html可以接受query string,这些query string被用作输入参数,巧妙!(曾经看到一篇blog提到,使用类似的方法以打开dojo的调试开关)。
runner.html可以接受下面的参数:
- dojoUrl 缺省地runner.html使用../../dojo/dojo.js作为dojo的位置。这个参数用来改写这个设置。
- testUrl 如果你的测试当中用到了任何第三方的库,而无法使用dojo.require注入的,通过这个参数来注入第三方库。尽管关键字testUrl使用了单数形式,但实际上它可以接收多个url,这些url需要以‘,’分隔。如果url不带’.js’,它也会自动补上。
- testModule 通过这个参数来引入我们的测试代码。同样,它可以接收多个moduleName,这些moduleName之间使用’,'分隔。dojo在绝大多数地方,名词的单复数被用来区分是单个对象,还是一组对象的集合。这个地方是个小小的意外。
- registerModulePath 前面引入的module如果其位置不在dojo.js/..目录下,则需要通过这个参数来注册。runner.html只是保存这里传入的参数,将其解析成为数组并保存,但并不真正调用dojo.regiesterModulePath。
所以,如果要运行myModuleTest这个测试模块,就需要这样输入url:
http://www.example.com/dojolib/util/doh/runner.html?testModule=myModuleTest
上面的地址,如果你的服务器不是apache或者nginx这样的静态资源服务器,而是tomcat这样的应用服务器,可能会有一点点问题。我不确信服务器是否会报告非著名的404 Not Found错误。但我使用了nginx且没有使用地址改写重定向看起来nginx直接去掉了queryString,将前面的部分当成请求地址返回了。
10:58:53 http request line: "GET /dojolib/util/doh/runner.html?testModule=myModuleTest HTTP/1.1"10:58:53 http uri: "/dojolib/util/doh/runner.html"10:58:53 http args: "testModule=myModuleTest"10:58:53 http exten: "html"10:58:53 http process request header line10:58:53 http header: "Host: www.lotus-scent.com"10:58:53 http header: "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"10:58:53 http header: "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"10:58:53 http header: "Accept-Language: zh-cn,zh;q=0.5"10:58:53 http header: "Accept-Encoding: gzip, deflate"10:58:53 http header: "Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7"10:58:53 http header: "Connection: keep-alive"10:58:53 http header: "Cookie: Drupal.toolbar.collapsed=0; cocat1=-19.-6.-3"10:58:53 http header done10:58:53 event timer del: 4: 131821556148710:58:53 rewrite phase: 010:58:53 test location: "/"10:58:53 test location: "dojodoc"10:58:53 test location: "edward"10:58:53 test location: "dojolib"10:58:53 test location: ~ "/blog/.*\.(?:ico|css|js|gif|jpe?g|png|zip)"10:58:53 using configuration "/dojolib"10:58:53 http cl:-1 max:104857610:58:53 rewrite phase: 210:58:53 post rewrite phase: 310:58:53 generic phase: 410:58:53 generic phase: 510:58:53 access phase: 610:58:53 access phase: 710:58:53 post access phase: 810:58:53 content phase: 910:58:53 content phase: 1010:58:53 content phase: 1110:58:53 http filename: "/usr/www/dojolib/util/doh/runner.html"10:58:53 add cleanup: 000000001E3ED7D010:58:53 http static fd: 310:58:53 http set discard body10:58:53 HTTP/1.1 200 OK
- 运用D.O.H进行Javascript应用程序测试(二)
- 运用D.O.H进行Javascript应用程序测试(一)
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(二)
- VB 函数参考二(H-O)
- 如何运用LoadRunner进行http接口测试
- 运用LoadRunner进行HTTP接口自动化测试
- 如何运用LoadRunner进行http接口测试
- 如何运用LoadRunner进行http接口测试
- 运用Kubernetes进行分布式负载测试
- 在3D MIDlet应用程序中运用动画材质
- 新型D.o.S(伪造TCP连接进行数据传输的D.o.S)
- 新型D.o.S(伪造TCP连接进行数据传输的D.o.S)
- 新型D.o.S(伪造TCP连接进行数据传输的D.o.S)
- 新型D.o.S(伪造TCP连接进行数据传输的D.o.S)
- 如何对Web应用程序进行负载测试
- 用pywinauto进行win32应用程序的测试
- 使用Jmeter对应用程序进行测试
- 用pywinauto进行win32应用程序的测试
- 67. A rolling store gathers no moss. 滚石不生苔,转业不聚财
- js获得浏览器相关参数【转】
- 鼠标滚轮到最底端继续加载新数据思路(多用于微博、空间、论坛)
- 灵动几度
- 周一Web 应用
- 运用D.O.H进行Javascript应用程序测试(二)
- Shader 多个点光源
- SharePoint 2010 统计本月内文档修改的数量
- customer水晶报表显示数据与数据库表不符
- Web 应用
- Web 应用
- Adobe Flash Builder 4 注册码
- Shader 点光源和自阴影
- Post-Screen Shaders和Rocket Commander游戏