À des fins de démonstration, j'ai configuré une application de grafles fraîche avec ces fichiers:
class HalloInterceptorSpec extends Specification implements InterceptorUnitTest<HalloInterceptor> { def setup() { } def cleanup() { } void "Test hallo interceptor matching"() { when:"A request matches the interceptor" withRequest(controller:"hallo") then:"The interceptor does match" interceptor.doesMatch() && request.getAttribute("heading") == "halloechen" } }
3 Réponses :
Vous devez utiliser la méthode de la DOCS: P>
avec intercepteurs: p>
Vous pouvez utiliser la méthode withintercepteurs pour exécuter du code dans la
Contexte de l'exécution d'intercepteurs. Ceci est typiquement fait withinterceptors code> au lieu du
WithRequest code> - WithReQuest valide uniquement la correspondance ou non - donc l'intercepteur n'est jamais réellement couru. P>
Cela ne fonctionne pas pour moi, le code d'intercepteur n'est toujours pas appelé.
Le truc pour moi appelait les intercepteurs avant () code> Méthode moi:
Si cela persiste avec Une solution de contournement est en ajoutant un faux "test d'intercepteurs de chargement" avant les vrais: p> avec intercepteurs code> c'est probablement à cause de https://github.com/gails/gails-testing-support/issues/29
void "Fake test to load interceptor"() {
// this is necessary because of this: https://github.com/grails/grails-testing-support/issues/29
given:
def controller = (PostController) mockController(PostController)
when:
withInterceptors(controller: 'post') { true }
then:
true
}