Grails Canoo Webtest插件:invoke()无法在POST请求中发送JSON数据

时间:2012-11-11 21:57:05

标签: webtest canoo canoo-webtest

我正在评估Canoo Webtest作为Grails插件进行自动集成/功能测试。

我有一个我试图测试的REST应用程序,但是Canoo Webtest 似乎没有在POST请求中正确发送JSON数据。我的测试代码如下所示

invoke( description:"Add a product to shopping cart", 
        url:'shoppingCart/add', method:'POST', 
        content:'{"class":"shop.service.Product", "name":"A product", "description":"Manufactured by X", "price":99.9}'
        //contentFile: '../product.json'
        )

请求正文为空,无论我是使用contentFile方法还是将数据内联为内容属性。测试报告显示数据正确发送,但错误页面显示错误,指出'JSONException:Missing value。在'的字符0'。作为GET请求响应的JSON数据恢复正常。

我用curl测试了相同的功能,它的工作原理非常好。在Canoo Webtest设置中是否有一些我缺少的东西?

感谢。

编辑:我正在使用Grails 1.3.7以防万一(

1 个答案:

答案 0 :(得分:0)

行。我开始尝试使用 invoke(),似乎将属性 soapAction 值设置为true就可以了。

我不知道为什么会这样。该属性的documentation of invoke()表示

soapAction
  Required? no
  If the HTTP method is POST and is in fact a SOAP POST request, 
  this allows the SOAP Action header to be set. Ignored for GETs.

显然它设置了一些所需的请求标头。没检查哪一个。

感谢您阅读:)

还不能将此答案标记为正确答案,但会尽可能这样做。