[Groovy] 新人学习Groovy遇到的test问题
xjhjf80808
2009-11-16
这段时间在自学《Grails 权威指南》,学到第6章 测试的时候遇到一些问题:
【本人代码完全源自书上】 1.命令 : grails create-test-suite 运行不了,我用grails help看到一个 create-unit-test 但此命令老是报No signature of method: Bookmark.save() is applicable for argument types: () values: []" 2.参考网上,用integration-test,即使数据库有数据,也报错: "values: []" 3.书上说有create-webtest命令,但我在grails help的情况下没发现此命令,执行也没效果 哪位大大知道告诉下,很痛苦啊...... 下面是我参考代码,完全照书上: 1.Bookmark.groovy class Bookmark { static hasMany = [tags : Tag]; URL url; String title; String notes; Date dateCreated; Integer rating; String type; static constraints = { url(url : true); title(blank : false); notes(maxSize : 1000); rating(range : 1..10); type(inList : ['blog','article','general','news']); } String toString(){ return "$title - $url"; } } 2.BookmarkTests.groovy import grails.test.* class BookmarkTests extends GrailsUnitTestCase { protected void setUp() { new Bookmark(title : "Skills Mater", url : new URL("http://skillsmatter.com"), rating : 5, type : 'blog', dateCreated : new Date()).save(); new Bookmark(title : "Canoo", url : new URL("http://canoo.com"), rating : 5, type : 'blog', dateCreated : new Date()).save(); new Bookmark(title : "Grails", url : new URL("http://grails.org"), rating : 5, type : 'blog', dateCreated : new Date()).save(); new Bookmark(title : "Groovy", url : new URL("http://groovy.org"), rating : 5, type : 'blog', dateCreated : new Date()).save(); } protected void tearDown() { Bookmark.list()*.delete(); } void testSortBookmarks(){ def sortUrlsBy = {property -> Bookmark.findAll().sort{it."$property"}.url; } def urls = sortUrlsBy("title"); assert urls; assert urls.size() == 4; assert urls[0].toString() == "http://canoo.com"; assert urls[1].toString() == "http://grails.org"; } } |
|
helian
2009-11-16
grails你用什么版本的?权威指南里是什么版本?
unit test里应该是不行的,save等动态方法都没有注入。 integration test里应该可以啊。你确定你跑的是integration test么? functional test是对正在运行的grails应用进行http 请求模拟,验证返回的response,所以不能直接去进行BookMark.save()这种操作。 |
|
JohnnyJian
2009-11-16
可以用mockDomain
|
|
xjhjf80808
2009-11-17
我用的是grails1.1.1,权威指南里是0.5
我用integration test报的就是读出的数据为空,不知道为什么。 而且我的工程师直接在Eclipse里生成的,不知道会不会有影响? |
|
xjhjf80808
2009-11-17
已经可以了,用integration test,不知道上次可能没配好吧,谢谢啦
|
|
helian
2009-11-17
权威指南有点out,grails已经沧海桑田了。
|
|
xjhjf80808
2009-11-17
⊙﹏⊙b汗,那我现在要学习grails得看什么书呢?刚才的问题没解决,原来是我搞错了,用integration test也不可以,楼上的推荐本书吧
|
|
helian
2009-11-17
xjhjf80808 写道 ⊙﹏⊙b汗,那我现在要学习grails得看什么书呢?刚才的问题没解决,原来是我搞错了,用integration test也不可以,楼上的推荐本书吧
grails的书还真不多。我都是看文档的。。。权威指南的代码可能不太能用了,概念解释应该还是没问题的。例子嘛可以研究一下grails网站的源码: http://github.com/grails/grails/tree/master/grails-samples/grails.org/ |
|
anzimu
2009-11-26
create-webtest 是function-test插进带的命令 你肯定还没有装这个插进
|