/ / Problema con spock e grails 2.0.1 durante il test del controller - grails, spock

Problema con spock e grails 2.0.1 quando si testano i controller: grails, spock

Durante l'esecuzione del test del controller Spock:

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

@Mock (MusicItem) class MusicItemControllerSpec estende ControllerSpec {

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
}

}

Dove parte testata è:

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)
}

Questo fa parte del controller. Ricevo questa eccezione:

| Esecuzione di 6 test spock ... 3 di 6 | Errore: creazione dell'elemento con i parametri corretti (myvibe.fondation.MusicItemControllerSpec) | java.lang.IllegalStateException: No WebApplicationContext trovato: nessun ContextLoaderListener registrato? su myvibe.fondation.MusicItemController.save (MusicItemController.groovy: 29) at myvibe.fondation.MusicItemControllerSpec.Creating element con i parametri corretti (MusicItemControllerSpec.groovy: 39) | Esecuzione di 6 test spock ... 4 di 6

Quando rimuovo questa riga dal metodo save ():

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

Di tutto funziona bene. Cosa mi manca?

risposte:

3 per risposta № 1

Non funziona a causa del tag del messaggio. Seguire dovrebbe funzionare

setup:
controller.metaClass.message = {args -> "mockMessage"}

http://greybeardedgeek.net/2011/05/13/testing-grails-controllers-with-spock/