Мне нужно получить зависимости, введенные в мои объекты домена в моих тестах.
Эти тесты помещаются в каталог test/integration и простираются от spock.lang.Specification
.
Как я могу это достичь?
Примечание. Я видел этот пост Как вставить spring beans в test test, но он не связан с grails.
Edit:
Зависимость, которую я хочу ввести, 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)