Injizieren Sie Abhängigkeiten im Grails Spock Specification-Test

In meinen Tests müssen die Abhängigkeiten in meine Domänenobjekte eingefügt werden.

Diese Tests werden im Verzeichnis test / integration abgelegt und erstrecken sich vonspock.lang.Specification.

Wie kann ich das erreichen?

Hinweis: Ich habe diesen Beitrag gesehenSo spritzen Sie Springbohnen in den Spocktest, aber es hat nichts mit Gral zu tun.

Bearbeiten:

Die Abhängigkeit, die ich bekommen möchte, istspringSecurityService in meinemSecUser Unterklasse aufgerufenPlayer. Die Methode, die fehlschlägt, ist dieencodePassword(), das heißt in derbeforeInsert().

Ich kann das verspottenencodePassword() Methode in einigen Tests, aber wenn ich meine Controller-Methode testen möchtensave()Ich kann das nicht verspottenPlayer Das wird erstellt, weil alles innerhalb der Controllermethode geschieht.

Nach dem Wechsel zu verlängernIntegrationSpec, das ist mein Testcode:

package intertigre.test.domain
import intertigre.domain.Fecha;
import intertigre.test.util.DomainFactoryTestService
import grails.plugin.spock.IntegrationSpec
import grails.test.mixin.TestFor

    @TestFor(Fecha)
    class FechaSpec extends IntegrationSpec{

    DomainFactoryTestService domainFactoryTestService = new DomainFactoryTestService()

    def 'test'(){
        given:
            def fecha = new Fecha()
        when:
            fecha.save()
        then:
            Fecha.get(1) == fecha
    }

}

Ich bekomme diese Ausnahme beim Laufengrails test-app :spock:

java.lang.NullPointerException: Cannot get property 'mainContext' on null object
    at grails.plugin.spock.IntegrationSpec.$spock_initializeSharedFields(IntegrationSpec.groovy)

Und das hier, wenn ich den Test alleine durchführe:

| Failure:  intertigre.test.domain.FechaSpec
|  java.lang.NullPointerException: Cannot get property 'autowireCapableBeanFactory' on null object
    at grails.plugin.spock.IntegrationSpec.setupSpec(IntegrationSpec.groovy:47)
| Failure:  intertigre.test.domain.FechaSpec
|  java.lang.NullPointerException: Cannot invoke method isActive() on null object
    at grails.test.mixin.support.GrailsUnitTestMixin.shutdownApplicationContext(GrailsUnitTestMixin.groovy:232)
    at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:176)
    at org.spockframework.runtime.extension.builtin.JUnitFixtureMethodsExtension$FixtureType$FixtureMethodInterceptor.intercept(JUnitFixtureMethodsExtension.java:145)
    at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:84)
    at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:176)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage