2016-04-28 10 views
0

Ich habe Probleme beim Testen meiner Controller, da es auf einen Dienst ankommt, der nicht zu injizieren scheint. Ich habe mehrere Möglichkeiten ausprobiert (z. B. Klassen wie grailsunitestcase, Spezifikation erweitern), aber ich bekomme immer Fehler. Die Sache ist, dass diese Service-Variable null ist und ich meine Controller-Index-Methode (die eine Render-Ansicht aufruft) aufgrund der Ausnahme nicht testen kann ... Ich muss wirklich wissen, wie das geht, aber ich habe keine Ahnung wo zu beginnen ...Probleme beim Testen der Grails Unit

Antwort

1

Unit-Tests sind genau das. Es gibt keine Grails-Umgebung, die den Controller umgibt. Wenn der Controller einen Dienst nutzt, der normalerweise injiziert wird, müssen Sie diesen Dienst selbst verspotten.

@TestFor(SomeController) 
@Mock([SomeService]) 
class SomeControllerSpec extends Specification 
    def "test some method"() { 
     given: 
      def mockService = mockFor(SomeService) 
      mockService.demand.someServiceMethod() { -> 
       return something 
      } 

      controller.someService = mockService.createMock() 
     when: 
      controller.someControllerMethod() 
     then: 
      // whatever checks are appropriate 
    } 
} 
+0

Hallo railsdog ... Danke für deine Antwort! Ich weiß nicht, was passiert ist, aber als ich das Projekt abgab, wurden die Dienste der getesteten Controller injiziert und alles funktionierte ok ... Aber plötzlich funktionieren alle getesteten Methoden gut, aber minus eins ... Ich sehe etwas Spezielles passiert aber gut. Ich verstehe, dass kein App-Server läuft, also kein Container die Abhängigkeiten injiziert ... Ich bin frustriert, da dies bedeuten könnte, dass ich eine Firma betrete ... Danke nochmal für deine Zeit – AgusDesign

Verwandte Themen