2011-08-23 24 views
5

Sto usando Grails 1.3.7. Sto provando a testare un reindirizzamento nel mio test di integrazione. Ecco il mio controller e il metodo in questione ...Grails: test di un reindirizzamento con un test di integrazione

class HomeController { 

def design = { 
    .... 
      if (params.page) { 
       redirect(uri: "/#/design/${params.page}") 
      } 
      else { 
       redirect(uri: "/#/design") 
      } 
      break; 
    } 
} 

Tuttavia nel mio test di integrazione, la chiamata a "controller.response.redirectedUrl" sta venendo a mancare (restituisce sempre null) anche se so che la chiamata di reindirizzamento è essere fatto (verificato attraverso la registrazione). Cosa c'è di sbagliato con il test di integrazione di seguito?

class HomeControllerTests extends grails.test.ControllerUnitTestCase { 
    .... 

    void testHomePageDesign() { 
     def controller = new HomeController() 

     // Call action without any parameters 
     controller.design() 

     assert controller.response.redirectedUrl != null 

     assertTrue(responseStr != "") 
    } 

Grazie, - Dave

risposta

2

Modifica HomeControllerTests di estendere GrailsUnitTestCase dovrebbe risolvere il problema.

class HomeControllerTests extends grails.test.GrailsUnitTestCase { 
    .... 
} 

I vari modi di generare una classe di test sembrano tutti variare la classe che è estesa.

create-integration-test => GroovyTestCase 
create-unit-test => GrailsUnitTestCase 
create-controller => ControllerUnitTestCase 

Tuttavia, secondo il Test section of the Grails User Guide, GrailsUnitTestCase è la parte centrale del telaio di prova e, almeno in 1.3.7, che è la migliore classe per le classi di test base su.

Problemi correlati