Внедрить зависимости в тесте спецификации Grails Spock
Мне нужно, чтобы зависимости вводились в мои доменные объекты в моих тестах.
Эти тесты помещаются в каталог test / интеграции и простираются отspock.lang.Specification
.
Как мне этого добиться?
Примечание. Я видел это сообщение.Как ввести бобовые в тест спока, но это не связано с Граалем.
Редактировать:
Зависимость, которую я хочу ввести,springSecurityService
в моемSecUser
подкласс называетсяPlayer
, Метод, который терпит неудачу, являетсяencodePassword()
который называется вbeforeInsert()
.
Я могу издеваться над этимencodePassword()
метод в некоторых тестах, но когда я хочу проверить свой метод контроллеровsave()
Я не могу издеваться надPlayer
это создается, потому что все это происходит внутри метода контроллеров.
После изменения продлитьIntegrationSpec
это мой тестовый код:
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
}
}
Я получаю это исключение при запускеgrails test-app :spock
:
java.lang.NullPointerException: Cannot get property 'mainContext' on null object
at grails.plugin.spock.IntegrationSpec.$spock_initializeSharedFields(IntegrationSpec.groovy)
И этот, когда я запускаю тест в одиночку:
| 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)