Injetar dependências no teste Grails Spock Specification
Eu preciso obter as dependências injetadas em meus objetos de domínio em meus testes.
Esses testes são colocados no diretório de teste / integração e se estendem despock.lang.Specification
.
Como posso conseguir isso?
Nota: eu vi este postComo injetar feijão primavera no teste de spock, mas não está relacionado com grails.
Editar:
A dependência que eu quero injetar éspringSecurityService
no meuSecUser
subclasse chamadaPlayer
. O método que está falhando é oencodePassword()
, que é chamado nobeforeInsert()
.
Eu posso zombar dissoencodePassword()
método em alguns testes, mas quando eu quero testar o meu método de controladoressave()
Eu não posso zombar doPlayer
isso está sendo criado porque tudo acontece dentro do método dos controladores.
Depois de mudar para estenderIntegrationSpec
este é o meu código de teste:
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
}
}
Estou recebendo essa exceção quando executandograils test-app :spock
:
java.lang.NullPointerException: Cannot get property 'mainContext' on null object
at grails.plugin.spock.IntegrationSpec.$spock_initializeSharedFields(IntegrationSpec.groovy)
E este quando eu executo o teste sozinho:
| 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)