0
votes

Grails 3: Intercepteurs de test unitaire: ne s'arrête pas dans l'intercepteur

À 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"
    }
}


0 commentaires

3 Réponses :


0
votes

Vous devez utiliser la méthode withinterceptors au lieu du WithRequest - WithReQuest valide uniquement la correspondance ou non - donc l'intercepteur n'est jamais réellement couru.

de la DOCS:

avec intercepteurs:

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 d'appeler des actions de contrôleur qui s'appuient sur le comportement des intercepteurs .

https://testing.grails.org/latest/guide/index.html


1 commentaires

Cela ne fonctionne pas pour moi, le code d'intercepteur n'est toujours pas appelé.



1
votes

Le truc pour moi appelait les intercepteurs avant () Méthode moi: xxx


0 commentaires

1
votes

Si cela persiste avec avec intercepteurs code> c'est probablement à cause de https://github.com/gails/gails-testing-support/issues/29

Une solution de contournement est en ajoutant un faux "test d'intercepteurs de chargement" avant les vrais: p>

    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
    }


0 commentaires