快速业务通道

精通Grails: 用JSON和Ajax实现异步Grails - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
,以确认是否返回 “Not Found”。清单 6 显 示了返回的无效的 JSON 对象:

清单 6. JSON 中的一个无效的 AirportMapping 对象

{"id":null, "class":"AirportMapping", "iata":"FOO", "lat":null, "lng":null, "name":"Not found", "state":null}

当然,这样的 “考验” 不能替代真正的测试。

精通Grails: 用JSON和Ajax实现异步Grails(4)

时间:2011-08-02 IBM Scott Davis

测试控制器

在 test/integration 中创建 AirportMappingControllerTests.groovy。添加清单 7 中的 2 个测试 :

清单 7. 测试一个 Grails 控制器

class AirportMappingControllerTests extends GroovyTestCase{  void testWithBadIata

(){    def controller = new AirportMappingController()    

controller.metaClass.getParams = {->      return ["id":"foo"] 

   }    controller.iata()    def response = controller.response.contentAsString  

  assertTrue response.contains("\"name\":\"Not found\"")   

 println "Response for airport/iata/foo: ${response}"  }  void 

testWithGoodIata(){    def controller = new AirportMappingController()    

controller.metaClass.getParams = {->      return ["id":"den"] 

   }    controller.iata()    def response = controller.response.contentAsString  

  assertTrue response.contains("Denver")    println "Response for 

airport/iata/den: ${response}"  }}

精通Grails: 用JSON和Ajax实现异步Grails(5)

时间:2011-08-02 IBM Scott Davis

输入 $grails test-app 运行测试。在 JUnit HTML 报告中应该可以看到成功信息,如图 2 所示。( 要回顾 Grails 应用程序的测试,请参阅 “测试 Grails 应用程序”)。

图 2. 在 JUnit 中测试通过

精通Grails: 用JSON和Ajax实现异步Grails - 编程入门网

看看 清单 7 中的 testWithBadIata() 中发生了什么。第一行(显然)是创建 AirportMappingController 的一个实例。这是为了后面可以调用 controller.iata() 并针对产生的 JSON 写一个断言。要使调用失败(在此就是如此)或成功(在 testWithGoodIata() 中),需要用一个 id 项为 params hashmap 提供种子。通常,查询字符串被解析并存储到 params 中。但是,在这里,没 有 HTTP 请求被解析。相反,我使用 Groovy 元编程直接覆盖 getParams 方法,使期望的值出现在返回 的 HashMap 中。(要了解关于 Groovy 元编程的更多信息,请参阅 参考资料)。

现在,JSON 产生器已经可以工作,并且经过了测试,接下来看看如何在一个 Web 页面中使用 JSON。

设置初始的 Google Map

我希望可通过 http://localhost:9090/trip/trip/plan 访问旅行计划页面。这意味着将一个 plan 闭包添加到 grails-app/controllers/TripController.groovy 中,如清单 8 所示:

清单 8. 设置控制器

class TripController {  def scaffold = Trip  def plan = {}}

由于 plan() 不是以 render() 或 redirect() 结束,根据约定优于配置原则,显示的将是 grails- app/views/trip/plan.gsp。用清单 9 中的 HTML 代码创建文件。(要回顾这个 Google Map 的基础原理 ,请参阅 “Grails 服务和 Google 地图”)。

清单 9. 设置初始 Google Map

<html>  <head>    <title>Plan</title>    <script 

src="http://maps.google.com/maps?file=api&am

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号