原作者Scott Vlaminck
http://refactr.com/blog/
scott@refactr.com
原文出自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代码。上面的代码就是范例。
第二部分
- 大小: 25.2 KB
分享到:
- 2009-11-23 21:22
- 浏览 1019
- 评论(1)
- 论坛回复 / 浏览 (1 / 1798)
- 查看更多
相关推荐
赠送jar包:groovy-all-2.4.13.jar; 赠送原API文档:groovy-all-2.4.13-javadoc.jar; 赠送源代码:groovy-all-2.4.13-sources.jar; 赠送Maven依赖信息文件:groovy-all-2.4.13.pom; 包含翻译后的API文档:groovy...
赠送jar包:groovy-all-2.4.5.jar; 赠送原API文档:groovy-all-2.4.5-javadoc.jar; 赠送源代码:groovy-all-2.4.5-sources.jar; 赠送Maven依赖信息文件:groovy-all-2.4.5.pom; 包含翻译后的API文档:groovy-all...
org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.jar'. ...重启 Android Studio 及可使用。
赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...
groovy-all-2.4.15.jar文件,MAC使用时需存放在/Users/用户名/.gradle/caches/jars-3/某一缓存目录下,找不到就都看一下,我遇到的问题是缓存目录中下载的是2.4.17版本,应该跟gradle版本升级有关
groovy-binary-1.8.6
最近的groovy-all-2.4.12.jar包供使用,解决as编译时报错问题
apache-groovy-sdk-4.0.1下载
groovy-all-2.4.8.jar
groovy-2.3.6-installer windows安装版本
groovy-all-2.1.6.jar groovy-all-2.1.6.jargroovy-all-2.1.6.jar
赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...
apache-groovy-sdk-2.5.2.zip apache-groovy-sdk-2.5.2.zip
官网下载groovy sdk
赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...
apache-groovy-sdk-2.4.4,for somebody who can not download
赠送jar包:groovy-all-2.4.5.jar; 赠送原API文档:groovy-all-2.4.5-javadoc.jar; 赠送源代码:groovy-all-2.4.5-sources.jar; 赠送Maven依赖信息文件:groovy-all-2.4.5.pom; 包含翻译后的API文档:groovy-all...
groovy-binary-1.7.4.zip groovy-binary-1.7.4.zipgroovy-binary-1.7.4.zipgroovy-binary-1.7.4.zipgroovy-binary-1.7.4.zipgroovy-binary-1.7.4.zipgroovy-binary-1.7.4.zip
groovy-all-2.4.7.jar
赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...