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)