精通Grails: 测试 Grails 应用程序 - 编程入门网
true。
hasErrors() 是另一个很有价值的测试方法。在调用 save() 或 validate() 之后,hasErrors() 允 许您查看验证错误。 清单 10 是经过扩展的 testBlankHotel(),它引入了其他一些很有用的验证方法: 清单 10. 验证错误的高级测试
精通Grails: 测试 Grails 应用程序(8)时间:2011-07-29 IBM Scott Davis确定类没有通过验证之后,您可以调用 getErrors() 方法(在这里,借助 Groovy 简洁的 getter 语 法,它被缩略为 errors),返回一个 org.springframework.validation.BeanPropertyBindingResult。 就像 GORM 与 Hibernate 相比是一个瘦 Groovy 层一样,Grails 验证只不过是一个简单的 Spring 验证 。 调用 println 的结果不会在命令行上显示,但它们出现在 HTML 报告中,如图 8 所示: 图 8. 查看测试的 println 输出 在 HotelStayTests 报告的右下角单击 System.out 链接。 清单 10 中给人亲切感觉的 Elvis 操作符(转过脸来 — 看见他向后梳起的发型和那双眼睛吗?)是 一个缩略的 Groovy 三元操作符。如果 ?: 左边的对象为 null,将使用右边的值。 将 hotel 字段更改为 "Holiday Inn" 并重新运行测试。您将在 HTML 报告中看到另一个 Elvis 输出 ,如图 9 所示: 图 9. 测试输出中的 Elvis 看见 Elvis 之后,不要忘记清空 hotel 字段 — 如果您不希望留下中断的测试的话。 如果仍然显示关于 checkIn 和 checkOut 的验证错误,您不必担心。就这个测试而言,您完全可以忽 略它们。但是这表明您不应该仅测试错误是否出现 — 您应该确保特定的 错误被抛出。 注意,我没有断言定制错误消息的确切文本。为什么我上一次关注匹配的字符串(测试 toString 的 输出时)而这一次没有关注?toString 方法的定制输出便是上一个测试的目的。这一次,我更关心的是 确定验证代码的执行,而不是 Grails 是否正确呈现消息。这表明测试更像一门艺术,而不是科学(如果 我想验证准确的消息输出,则应该使用 Web 层测试工具,比如 Canoo WebTest 或 ThoughtWorks Selenium)。 精通Grails: 测试 Grails 应用程序(9)时间:2011-07-29 IBM Scott Davis创建和测试定制验证 现在,应该处理下一个用户场景了。您需要确保 checkOut 日期发生在 checkIn 日期之后。要解决这 个问题,您需要编写一个定制验证。编写完之后,要验证它。 将清单 11 中的定制验证代码添加到 static constraints 块: 清单 11. 一个定制的验证
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |