Как сделать два поста с разным содержанием в GrailsIntegrationTesting - PullRequest
2 голосов
/ 17 марта 2011

Я тестирую контроллер и не могу сделать два сообщения с разным содержанием. Следует примеру, в котором я выполняю сообщение в cardController с некоторыми данными (post1, с json1). Затем я выполняю другой пост с другими данными (post2 с 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 ]

4 голосов
/ 21 марта 2011

Спасибо, я мог с помощью 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()
}
3 голосов
/ 17 марта 2011

Попробуйте позвонить cardController.response.reset() после def post1 = cardController.post(). Не ожидается, что вы сделаете два запроса для каждого метода тестирования, поэтому вам нужно выполнить некоторую очистку.

...