Внедрение зависимостей в тест спецификации Grails Spock

Мне нужно внедрить зависимости в объекты моего домена в моих тестах.

Эти тесты находятся в каталоге test/integration и простираются от spock.lang.Specification.

Как я могу этого добиться?

Примечание. :Я видел этот пост Как внедрить спринг-бины в спок-тест , но он не связан с Grails.

Изменить:

Зависимость, которую я хочу внедрить, это 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)

12
задан Community 23 May 2017 в 12:17
поделиться