【问题标题】:Grails: Integration Test an Ajax request - xhrGrails:集成测试 Ajax 请求 - xhr
【发布时间】:2012-01-24 18:05:29
【问题描述】:

如何在 Grails 中为控制器设置 ajax 请求测试?

我试过了

    def homeController = new HomeController()

    homeController.request.contentType = "text/json"
    homeController.request.content = '{"event_id":2}'.getBytes()
    homeController.request.xhr = true //error: can't be set

    homeController.landingPage()

在我的“landingPage”操作中

Controller
...
...
 if(params.event_id){
     //set values of the "event" object
 }

 if (request.xhr) {

       def result = [eventTile: event.getAt(0).title, eventId: event.getAt(0).id]

            render result as JSON
            return
        }
...
...

如果不正常指定它,我找不到到达 params 字段的方法。

 homeController.params.event_id = 2

那么如何设置 Grails 集成测试以将 xhr 设置为 true,这将从我的控制器返回 JSON?

【问题讨论】:

  • 你试过吗? homeController.metaClass.getRequest = { [xhr:true] }

标签: java ajax grails groovy integration-testing


【解决方案1】:

也许我没有得到正确的问题。但是发现你可以使用这种方式来强制你的请求被认为是 xhr 请求。

def homeController = new HomeController()

homeController.request.content = '{"event_id":2}'.getBytes()
homeController.request.makeAjaxRequest()
homeController.landingPage()

返回值将是GrailsMockHttpServletResponse

homeController.response.json == "" //Make your tets here

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多