2014-07-22 1 views
0

J'ai été chargé d'écrire une intégration (Grails) Junit pour cette section du code du contrôleur - et je n'ai jamais rien vu de tel auparavant. C'est un projet pour créer et remplir une liste de faq; par lequel une faq se compose de champs de catégorie, de question et de réponse. La section de la méthode en question que je voudrais tester est la suivante:Test du contrôleur Grail Junit: request.withformat

static allowedMethods = [index: 'GET', show: 'GET', create: 'GET', edit: 'GET', save: 'POST', update: 'PUT', faq:'GET', delete:'DELETE'] 

... more stuff 

    @Transactional 
    def save(Faq faqInstance) { 
... other stuff.... 

     request.withFormat { 
      form multipartForm { 
       flash.message = message(code: 'default.created.message', args: [message(code: 'faq.label', default: 'FAQ'), faqInstance.id]) 
       redirect faqInstance 
      } 
      '*' { respond faqInstance, [status: CREATED] } 
     } 
    } 

Je suis encore à apprendre ce genre de choses, alors cela pourrait être plus facile que mes connaissances permet. :) J'ai commencé à se moquer un test JUnit qui introduit une FAQ très générique, mais je ne suis pas sûr de ce qu'il est censé revenir ou sinon comment procéder ....

void "test save with request of form"(){ 
    def cont = new FaqController() 
    cont.request.method = 'POST' 
    cont.params.category = 'General' 
    cont.params.question = "This is a question" 
    cont.params.answer = "This is an answer" 
    cont.save() 
    //what to return? 
} 

Merci pour votre aide et pardonne mon ignorance si je néglige quelque chose d'évident. :)

-ryan

+0

voir http://grails.org/doc/latest/guide/testing.html#unitTestingControllers pour en savoir plus sur le test des contrôleurs (remplacez le dernier de l'url par votre version grails si vous n'utilisez pas la version 2.4). Il mentionne aussi avecFormat. –

+0

J'ai déjà lu cette partie et elle ne répond pas à mes besoins. J'ai besoin de trouver un exemple de test d'intégration dans le style Junit qui s'adresse à withFormat. – ry1633

Répondre

0

Vous devez vérifier controller.response, quelque chose comme ceci:

void testControllerRespondsWithJson() { 
    def controller = new FooController() 
    controller.request.method = 'POST' 
    controller.params.category = 'General' 
    controller.params.question = "This is a question" 
    controller.params.answer = "This is an answer" 
    controller.response.format = 'json' 

    controller.save() 

    def json = controller.response.json 
    assert controller.response.status == HttpServletResponse.SC_CREATED 
    assert json.category == controller.params.category 
    // ... 
} 

controller.response.text est le résultat "standard", un String. Dans le cas d'un résultat json, il est plus facile de l'analyser en un objet json et de le vérifier.

+0

merci c'est très utile ... – ry1633