`
foxgem
  • 浏览: 17110 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Grails中的Controller单元测试

阅读更多

对于Controller的单元测试,Grails也提供了很方便的支持,使得书写非常简单,有代码为证:

单元测试代码
  1. class CategoryControllerTests extends GroovyTestCase {   
  2.        
  3.     void setUp(){   
  4.         def test1= new Category(name: "Test1", parent: null).save()   
  5.         def test2= new Category(name: "Test2", parent: null).save()   
  6.         def test3= new Category(name: "Test3", parent: null).save()   
  7.            
  8.         def test11= new Category(name: "Test11", parent: test1).save()   
  9.         def test12= new Category(name: "Test12", parent: test1).save()   
  10.         def test21= new Category(name: "Test21", parent: test2).save()   
  11.     }   
  12.   
  13.     void testListRoot() {   
  14.         def controller= new CategoryController()
  15.         //categoryList对应返回的model   
  16.         def categoryList= controller.list()?.categoryList   
  17.            
  18.         assertEquals 3, categoryList.size()   
  19.         assertEquals 'Test1', categoryList[0].name   
  20.         assertEquals 'Test2', categoryList[1].name   
  21.         assertEquals 'Test3', categoryList[2].name   
  22.     }   
  23.        
  24.     void testListTest1(){   
  25.         def controller= new CategoryController()
  26.         //其中的params表示的是requestparameter,后面的id是传入的参数。
  27.         //对于session之类以此类推。   
  28.         controller.params.id= 1
  29.         def categoryList= controller.list()?.categoryList   
  30.            
  31.         assertEquals 2, categoryList.size()   
  32.         assertEquals 'Test11', categoryList[0].name   
  33.         assertEquals 'Test12', categoryList[1].name   
  34.     }   
  35. }   

Controller部分代码
  1. class CategoryController {   
  2.     def index = { redirect(action:list,params:params) }   
  3.   
  4.     def allowedMethods = [save:'POST']   
  5.   
  6.     def list = {   
  7.         if(!params.id){   
  8.             return [ categoryList: Category.findAllByParentIsNull() ]   
  9.         }else{   
  10.             def category= Category.get(params.id)   
  11.             if(category){   
  12.                 return [ categoryList: Category.findAll("from Category c where c.parent.id=$params.id"), path: category.getPath()]   
  13.             }else{   
  14.                 flash.message = "Category not found with id ${params.id}"  
  15.                 redirect(action:list)   
  16.             }               
  17.         }   
  18.     }
  19. ......
  20. }  

以上的代码基本上向开发者隐藏了背后的Mock机制,使用起来也更加简单方便。对于如此简单就能完成Controller的测试,我们没有理由不把TDD进行到底。

分享到:
评论
5 楼 sungaofei 2007-11-15  
啥时候又把博客搬到这了,还混成了infoq的编辑。老哥我要离开西安了,有时间一块喝个酒吧
4 楼 foxgem 2007-06-07  
会,缺省grails中使用的内存数据库。
3 楼 yanhua 2007-06-07  
请问foxgem,new Category(name: "Test1", parent: null).save()  会不会操作数据库呢?
2 楼 foxgem 2007-06-04  
最简单的做法就是在ant中去调用grails test,因为它本身就是一个命令。这个ant有很多例子。
1 楼 agile_boy 2007-06-01  
对,通过运行grails test,运行测试还是很方便的,不过目前我还不知道如何集成到ant,maven等环境中。。。

相关推荐

    Grails中文参考手册

    Grails 中文 参考手册

    grails中文参考手册

    grails中文参考手册 学习资料 groovy

    grails 中文第二版

    grails 中文第二版

    grails中文API

    grails 中文 API grails 中文 API

    Grails1.1中文文档(CHM)

    Grails1.1最新 中文 文档 当今的Java Web开发技术显得过于复杂,相对于它本身的需要来说。现在主流的Java Web框架也是异常复杂,而且没有很好的遵循 Don't Repeat Yourself (DRY) 法则。 因此我们要以一种新的思维...

    Grails Grails Grails

    Grails Grails Grails Grails Grails

    Grails1.1中文文档

    Grails1.1中文文档

    Grails 中文参考手册

    9.1 单元测试 9.2 集成测试 9.3 功能测试 10. 国际化 10.1 理解信息绑定 10.2 改变Locales 10.3 读取信息 11. 安全 11.1 预防攻击 11.2 字符串的编码和解码 11.3 身份验证 11.4 关于安全的插件 11.4.1 Acegi 11.4.2 ...

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    grails中的上传,下载

    grails中的上传,下载,需要的请下载

    Grails权威指南

     1.7 单元测试  1.8 本章小结 第2章 groovy动态语言  2.1 groovy和java的异同  2.1.1 相同点  2.1.2 不同点  2.2 基础知识  2.1.1 类声明 . 2.2.2 语言级断言(assertion)  ...

    Grails 1.1 中文手册 chm

    Grails 最新的 v1.1版的中文文档,chm格式,Grails是一套快速开发Web应用的开源框架,基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,能为大家带来超高效率的一站式框架。

    grails中文入门简介

    比较难找的grails的资料,我也是找了很久才找到的。需要grails相关的拿走

    grails 中文手册

    grails 中文手册,grails应该不用说明是啥东西了吧,流行的脚本语言groovy应用框架。

    grails中文文档

    比较详细的grails中文文档,有所有命令行解释,还有grails的一个完整的学习过程的资料

    Grails权威指南 Grails权威指南

    Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南

    grails中文帮助

    grails 中文帮助 中文帮助grails 中文帮助 中文帮助grails 中文帮助 中文帮助grails 中文帮助 中文帮助

Global site tag (gtag.js) - Google Analytics