精通Grails - 使用Grails进行单元测试(单元测试提速) - 编程入门网
--------------------------------------------------
Tests PASSED - view reports in /testing/test/reports.
精通Grails - 使用Grails进行单元测试(单元测试提速)(4)时间:2010-12-03 IBM Scott Davis要进一步细化单元测试,您可以断言验证会因为特定字段上的特定约束而失 败,如清单 8 所示。mockForConstraintsTests() 方法将 errors 集合元编程 到域类上。此 errors 集合简化了对是否触发了正确的约束的验证。 清单 8. 断言特定字段上的一个特定约束违规
重新运行此测试。它还会意外地失败吗?查看报告输入(如图 3 所示),找 出问题根源: 图 3. 用空值替代空格导致的失败 错误消息为 expected:<[blank]> but was:<[nullable]>。验 证失败了,但原因并不是您所期望的那样。 很容易遇到这种错误。在 Grails 中,默认情况下,域类中的所有字段必须 非空。这项隐含限制的问题在于,您通常会通过 HTML 表单与 Grails 交互。如 果在 HTML 表单中将 String 字段保留为空,paramsMap 中的控制器会将其看作 空 String(也就是 ""),而不是 null。 如果单击 HTML 报告底部的 System.out 链接,可以看到 3 个 String 字段 (name、login 和 password)都抛出了 nullable 约束违规错误。图 4 显示了 println 调用的输出。只有 role 字段 — 其默认值为 user — 通过隐含的 nullable 约束。 图 4. 测试的 System.out 输出 精通Grails - 使用Grails进行单元测试(单元测试提速)(5)时间:2010-12-03 IBM Scott Davis再次调整 testBlank() 测试,确保验证因合适的原因而失败(从而使单元测 试通过),如清单 9 所示: 清单 9. 测试现在因正确的原因得以通过
在重新运行测试以确保其通过时,可以解决一个稍微棘手一些的约束: unique。 使用 mockForConstraintsTests() 测试 unique 约束 在上一节已经看到,可以在隔离环境中轻松执行对他多数约束的测试。例如 ,测试 password 字段的 minSize 至少为 5 非常简单,因为它只依赖于字段本 身的值。清单 10 给出了 testPassword() 方法: 清单 10. 测试 minSize 约束
但是如何测试 unique 这样的约束呢?这种约束确保数据库表不包含重复值 。幸运的是 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |