如何在Grails单元测试中模拟ajax请求

时间:2014-12-22 12:49:37

标签: grails spock

我有一个控制器动作,它处理ajax和非ajax请求。但是,如果它是一个ajax请求,它会做一些额外的事情。

  

if(request.xhr){仅用于ajax请求的东西}

但是,当我试图对此进行单元测试时。无论我做了什么,我都无法创建/模拟ajax请求。即,request.xhr一直失败。

我做过尝试

  

request.makeAjaxRequest()

但是,它不起作用。有什么想法??

3 个答案:

答案 0 :(得分:2)

在您的单元测试中,您可以执行以下操作:

request.makeAjaxRequest()

答案 1 :(得分:1)

虽然已经很长一段时间了,但问题是问题,但这是我为Grails即将推出的新手提供的解决方案...

controller.metaClass.getRequest = { ->
        [xhr: true]
}

或者只是它可能是

void 'test list'() {
    when:
    request.method = 'POST'
    request.makeAjaxRequest()
    controller.getPage()

    then:
    // …
}

此解决方案适用于我的模拟 Ajax请求

的情况

答案 2 :(得分:0)

只需添加以下标头即可:controller.request.addHeader('X-Requested-With', 'XMLHttpRequest')

相关问题