精通Grails: 创建自定义插件 - 编程入门网
2 IBM Scott Davis
注意,将 transactional 标志设置为 false 后,我们声明了 shortenUrlService 变量。然后在 setUp() 方法中初始化服务。为每个服务调用 setUp() 和 tearDown() 方法。 如果这是一个集成测试,则不会出现错误。但由于这是一个单元测试,testIsGdWithBadUrl() 方法失 败并显示错误消息:No such property: log for class: ShortenUrlService。在 Web 浏览器中打开 test/reports/html/index.html,您将看到如图 2 所示的错误消息。 图 2. 注入的 log 对象导致单元测试失败 如上所示,log 对象并没有注入服务中以进行单元测试。(记住:单元测试意味着完全隔离运行)。 好在解决这个问题只需在 setUp() 方法中添加一行 — mockLogging(ShortenUrlService) — 如清单 11 所示。 清单 11. 模拟注入的 log 对象
mockLogging() 方法将一个模拟 log 对象注入到服务中。这个模拟记录器将它的输出发送到 System.out 而不是任何已定义的 log4j 输出器。要查看输出(如图 3 所示),再次输入 grails test -app,单击 ShortenUrlServiceTests 的 HTML 报告页面底部的 System.out 链接。 图 3. 模拟记录器的输出 您还可以为这个插件集成大量其他 Grails 工件 — 一个自定义 TagLib 以缩短 GSP 中的 URL,一个 自定义编解码器 — 但现在您已经充分了解一个插件可以提供的内容,在这里就不一一演示了。在下一个 小节中,我们将把这个插件原样打包并集成到另一个 Grails 项目中。 精通Grails: 创建自定义插件(7)时间:2011-08-02 IBM Scott Davis打包并部署插件 要准备一个完整的 Grails 应用程序以便部署,通常需要输入 grails war。但对于插件,则应输入 grails package-plugin。这样,您的项目中将生成一个 grails-shortenurl-0.1.zip 文件。 回想一下,“精通 Grails:了解插件” 介绍过,所有 Grails 插件都作为 ZIP 文件分发。查看一下 home 目录中的 .grails/1.1.1/plugins 目录,您将看到类似的插件名称,比如 grails-hibernate- 1.1.1.zip 和 grails-searchable-0.5.5.zip。 假如 ShortenUrl 是一个公共插件,您可以输入 grails release-plugin 将您的更改提交到 Grails Plugins 门户网站。然后,任何人都可以输入 grails install-plugin shortenurl 将它集成到他们的项 目中。您也可以在本地轻松安装私有插件,只需提供 ZIP 文件在您的本地文件系统上的完整路径。 要测试这一点,在 shortenurl 目录外创建一个新的空目录。输入 grails create-app foo 创建一个 简单的应用程序。切换到 foo 目录并输入 grails install-plugin /local/path/to/grails- shortenurl-0.1.zip,当然,要用实际插件路径替换其中的路径。您将看到类似于清单 12 的输出: 清单 12. 安装一个本地插件
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |