2012-04-05 5 views
1

Während Spock Controller-Test ausgeführt wird:.Ausgabe mit spock und grails 2.0.1 beim Testen Controller

import grails.plugin.spock * import grails.test.mixin *

@Mock (MusicItem). Klasse MusicItemControllerSpec ControllerSpec erstreckt {

def "Creating element with correct parameters"() { 
    setup: 
    controller.params.artist = "John Lennon" 
    controller.params.name = "Imagine" 
    controller.params.location = new URL ("http://localhost") 

    when: 
    controller.save() 

    then: 
    redirectArgs.action == "show" 
    controller.flash.message != null 
    MusicItem.count() == 1 
} 

}

Wo Teil, der getestet wird, ist:

def save() { 
    def musicItemInstance = new MusicItem(params) 
    if (!musicItemInstance.save(flush: true)) { 
     render(view: "create", model: [musicItemInstance: musicItemInstance]) 
     return 
    } 

    flash.message = message(code: 'default.created.message', args: [message(code: 'musicItem.label', default: 'MusicItem'), musicItemInstance.id]) 
    redirect(action: "show", id: musicItemInstance.id) 
} 

Das ist Teil des Controllers. Ich erhalte diese Ausnahme:

| 6 Spocktests laufen ... 3 von 6 | Fehler: Erstellen eines Elements mit korrekten Parametern (myvibe.fondation.MusicItemControllerSpec) | java.lang.IllegalStateException: Kein WebApplicationContext gefunden: kein ContextLoaderListener registriert? bei myvibe.fondation.MusicItemController.save (MusicItemController.groovy: 29) bei myvibe.fondation.MusicItemControllerSpec.Creating Element mit korrekten Parametern (MusicItemControllerSpec.groovy: 39) | 6 spock Tests laufen ... 4 von 6

Wenn ich diese Zeile von save() Methode entfernen:

 flash.message = message(code: 'default.created.message', args: [message(code: 'musicItem.label', default: 'MusicItem'), musicItemInstance.id]) 

als alle gut funktionieren. Was ich vermisse?

+0

Ist die Test-Spezifikation in. Integration oder Unit-Test? ControllerSpec ist für Komponententest, und afaik wird in 2.0.x nicht benötigt. In der Integration erweitere ich IntegrationSpec – sbglasius

+0

Es ist in Einheitsspezifikation. – robert

Antwort