快速业务通道

精通Grails: 创建自定义插件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ple-darwin9.0) libcurl/7.16.3           OpenSSL/0.9.7l zlib/1.2.3 > Host: is.gd > Accept: */* > < HTTP/1.1 500 Internal Server Error < X-Powered-By: PHP/5.2.6  < Content-type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < Date: Wed, 19 Aug 2009 17:33:04 GMT < Server: lighttpd/1.4.22  < * Connection #0 to host is.gd left intact * Closing connection #0 Error: The URL entered was not valid.

现在这个插件的核心功能已经实现并经过测试,您应该创建一个方便的服务,以一种 Grails 友好的 方式公开这两个实用程序类。

精通Grails: 创建自定义插件(5)

时间:2011-08-02 IBM Scott Davis

创建 ShortenUrl 服务

要创建一个服务,输入 grails create-service ShortenUrl。将清单 9 中的代码添加到 grails- app/services/ShortenUrlService.groovy。

清单 9. ShortenUrl 服务

import org.grails.shortenurl.* class ShortenUrlService {    boolean transactional = false    def tinyurl(String longUrl) {     return TinyUrl.shorten(longUrl)    }    def isgd(String longUrl) {     def shortUrl = IsGd.shorten(longUrl)     if(shortUrl.contains("error")){      log.error(shortUrl)     }     return shortUrl    } }

与前面的集成测试相似,确保将 transactional 标记设置为 false。这些调用不涉及任何数据库,所 以不必将它们封装到一个事务中。

注意,isgd() 方法将记录任何企图缩短一个无效 URL 的日志。所有 Grails 工件将在运行时使用一 个 log 对象注入。可以调用 log 对象上与想要的日志级别相对应的方法,这些日志级别包括: debug、 info 和 error 等(参见 参考资料 了解关于日志记录的更多信息)。您稍后将会看到,编写单元测试时 ,处理这个注入的 log 对象需要一个额外步骤。

当 Grails 为您创建服务时,它将把相应的测试添加到 test/unit 目录。通常,您需要将 ShortenUrlServiceTests.groovy 移动到 test/integration 目录,因为在语义上,它是一个集成测试, 而不是一个单元测试 — 依赖外部资源测试服务。但现在,您应将它保留在 test/unit 目录中,以便我 能够向您展示几个单元测试技巧。将清单 10 中的代码添加到 ShortenUrlServiceTests.groovy。

清单 10. 测试 ShortenUrl 服务

import grails.test.* class ShortenUrlServiceTests extends GrailsUnitTestCase {    def transactional = false    def shortenUrlService    protected void setUp() {      super.setUp()      shortenUrlService = new ShortenUrlService()    }    protected void tearDown() {      super.tearDown()    }    void testTinyUrl() {     def shortUrl = shortenUrlService.tinyurl("http://grails.org")     assertEquals "http://tinyurl.com/3xfpkv", shortUrl    }    void testIsGd() {     def shortUrl = shortenUrlService.isgd("http://grails.org")     assertEquals "http://is.gd/2oCZR", shortUrl    }    void testIsGdWithBadUrl() {     def shortUrl = shortenUrlService.isgd("IAmNotAValidUrl")     assertTrue shortUrl.startsWith("An error occurred:")    } }

精通Grails: 创建自定义插件(6)

时间:2011-08-0

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号