精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-23
最后修改:2009-11-25
原作者Scott Vlaminck
原文出自GroovyMag sampler,也就是免费下载的那一期。有兴趣的朋友可以去http://www.groovymag.com/注册并免费下载。
作者自称在开发RIA过程中使用了大量javascript。虽然可以用selenium+jsUnit进行测试,但这位老兄还是希望可以在持续集成中用java什么的进行测试。于是他想到了Rhino。拥有两年groovy使用经验的作者在不太好用的Rhino外面包了一层groovy,这就是他的Sumatra -- 一个在java下运行的javascript测试框架。
资源: SVN: http://svn.assembla.com/svn/sumatra/trunk/sumatra grails插件下载: http://plugins.grails.org/grails-sumatra/tags/RELEASE_0_2/grails-sumatra-0.2.zip
1. 测试简单javascript对象
Conference = function() {} Conference.prototype = { name:null, sessions:new Array() } Session = function() {} Session.prototype = { title:null } var minnesotaBarCamp = new Conference() minnesotaBarCamp.name = 'Minnebar'
以上javascript代码创建了两个有关系的模型,Conference 和 Session。然后创建了一个Conference 的实例,其中的sessions为空。将以上javascript存成一个文件:conference.js
class PrototypeTest extends sumatra.groovy.SumatraTestCase{ } 写一个groovy测试,继承sumatra里面提供的SumatraTestCase就可以了。
load('conference.js') def conference = getJsObject('minnesotaBarCamp') // check attributes on the javascript object assert 'Minnebar' == conference.name assert null != conference.sessions assert 0 == conference.sessions.length 在测试代码中,可以用load方法调用js文件。getJsObject方法则提供了引用javascript中object的途径。上面代码里的conference 就是对conference.js里minnesotaBarCamp 的引用。 之后的断言代码就没什么说的了,很简单明了。
load('conference.js') def conference = getJsObject('minnesotaBarCamp') assert 0 == conference.sessions.length // using the 'init' builder instantiates a Session javascript object defined in conference.js def session1 = init.Session() session1.name = 'Metaprogramming in Groovy' conference.sessions.push(session1) // since these are JavaScript objects // adding items to an array this way also works: // conference.sessions[0] = session1 assert 1 == conference.sessions.length assert "Metaprogramming in Groovy" == conference.sessions[0].name
当然通常我们调用的js里面不会实例化什么东西让我们调用的,我们要自己实例化,在SumatraTestCase中提供了init这个builder来帮忙。init.Session()就实例化了一个Session。
execJs('var object = new Object()') execJs('object.message = "Hello World"') def object = getJsObject('object'); assert 'Hello World' == object.message 在SumatraTestCase还可以用execJs直接运行javascript代码。上面的代码就是范例。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-25
最后修改:2009-11-25
|
|
返回顶楼 | |
浏览 1814 次