精通Grails - 使用Grails进行单元测试(单元测试提速) - 编程入门网
er(suziq)
assertFalse adminService.restartServer(jdoe)
}
这一次,与预期的一样,测试通过了。所有日志输出都被发送到 System.out 。请记住,您可以在 HTML 报告中看到此输出。 理解 ControllerUnitTestCase 使用 GrailsUnitTestCase,可以轻松测试域类和服务,但测试控制器还需要 其他一些功能。ControllerUnitTestCase 扩展了 GrailsUnitTestCase,所以您 仍然可以像以前一样使用 mockForConstraintsTests()、mockDomain() 和 mockLogging()。而且 ControllerUnitTestCase 为您正在测试的控制器创建一 个新实例,并将其存储在名为 controller 的变量中。这个 controller 变量可 用于在测试期间以编程方式与控制器交互。 要更好地理解核心控制器的功能,在命令提示符处键入 grails generate- controller User。这将 def scaffold = true 替换为控制器代码的完全实现。 在完全实现的 grails-app/controllers/UserController.groovy 文件中, 您可以看到,调用 index 操作会重定向到 list 操作,如清单 18 所示: 清单 18. UserController 中默认的 index 操作
要验证是否按预期发生了重定向,将一个 testIndex() 方法添加到 test/unit/UserControllerTests.groovy,如清单 19 所示: 清单 19. 测试默认的 index 操作
精通Grails - 使用Grails进行单元测试(单元测试提速)(8)时间:2010-12-03 IBM Scott Davis可以看到,您首先调用控制器操作,就像它是另一个控制器上的方法一样。 redirect 参数存储一个名为 redirectArgs 的 Map 中。断言验证 action 键是 否包含 list 值。(如果操作以一个 render 结束,那么您可以根据名为 renderArgs 的 Map 进行断言)。 现在假设 index 操作稍微先进一些。它检查一个 User 的会话并根据用户是 否为 admin 来重定向会话。在 ControllerUnitTestCase 中,session 和 flash 都是 Map,您可以在调用或调用之后的断言之前对它们进行填充。更改 index 操作,如清单 20 所示: 清单 20. 更加先进的 index 操作
要测试这项新功能,更改 UserControllerTests.groovy 中的 testIndex() 方法,如清单 21 所示: 清单 21. 测试 session 和 flash 值
一些控制器操作需要传入参数。在 ControllerUnitTestCase 中,您可以将 值添加到 params Map 中,就像 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |