如何在Grails集成测试中制作两篇内容不同的帖子

时间:2011-03-17 19:33:26

标签: testing grails controller integration

我正在测试一个控制器,我不能发两个内容不同的帖子。 下面是一个例子,我用一些数据(post1,json1)执行一个帖子给cardController。然后,我执行另一个帖子,使用不同的数据(post2 with json2)。但是我无法成功完成第二篇文章,因为我已经看到(调试应用程序),请求中的json再次是json1,而不是josn2。那么,我怎么能在同一个测试中发两个不同的帖子呢?

void testSomething(){

    def json1 = [number: "345678000000007", exp_month: 5, exp_year: 2012] as JSON
    def strJson1 = json1 as String

    cardController.request.contentType = "text/json"
    cardController.request.content = strJson1.getBytes()
    def post1 = cardController.post()

    def json2 = [number: "345678000000009", exp_month: 5, exp_year: 2013] as JSON
    def strJson2 = json2 as String

    cardController.request.contentType = "text/json"
    cardController.request.content = strJson2.getBytes()
    def post2 = cardController.post()
}

2 个答案:

答案 0 :(得分:4)

谢谢,我可以使用reset(),removeAllParameters()和clearAttributes()。 以下是示例:

void testSomething(){

    def json1 = [number: "345678000000007", exp_month: 5, exp_year: 2012] as JSON
    def strJson1 = json1 as String

    cardController.request.contentType = "text/json"
    cardController.request.content = strJson1.getBytes()
    def post1 = cardController.post()


    cardController.response.reset()    
    cardController.request.reset()
    cardController.request.removeAllParameters()
    cardController.request.clearAttributes()

    def json2 = [number: "345678000000009", exp_month: 5, exp_year: 2013] as JSON
    def strJson2 = json2 as String

    cardController.request.contentType = "text/json"
    cardController.request.content = strJson2.getBytes()
    def post2 = cardController.post()
}

答案 1 :(得分:3)

cardController.response.reset()之后尝试拨打def post1 = cardController.post()。预计每个测试方法都不会发出两个请求,因此您需要进行一些清理。