Grails:Integration测试Ajax请求 - xhr

时间:2012-01-24 18:05:30

标签: java ajax grails groovy integration-testing

如何在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?

2 个答案:

答案 0 :(得分:2)

也许我没有把问题说得对。但是发现你可以用这种方式强制你的请求被视为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

答案 1 :(得分:0)