Ich versuche, einen Integrationstest für einen Service zu schreiben, der eine Frühlingsbohne injiziert hat. Die Frühlingsbohne ist in resources.groovy
definiert. Die Bean, die mein Dienst verwendet, scheint in meinem Integrationstest nicht injiziert zu werden, wird aber bei der Ausführung von grails run-app
ordnungsgemäß in das Programm injiziert.Injection Spring Beans von resources.groovy in Integrationstest für einen Grails 3 Service
Hier ist ein minimal Fehler Beispiel:
grails-app/conf/spring/resources.groovy
beans = {
myBean(Object){}
}
grails-app/services/MyService.groovy
class MyService {
def myBean
def serviceMethod(){
myBean.class.simpleName
}
}
grails-app/src/integration-test/groovy/MyServiceSpec.groovy
@Integration
class MyServiceSpec extends Specification {
def myService
when:
def myBean = myService.myBean
then:
myBean != null
}
Grails Version Info:
$ grails -v
| Grails Version: 3.1.9
| Groovy Version: 2.4.7
| JVM Version: 1.8.0_92
Update:
Frühling scheint ganz gut andere Dienste zu injizieren. Wenn ich innerhalb MyService
einen anderen Dienst deklariere, wird es injiziert.
class MyService {
def myBean
def myOtherService
def serviceMethod(){
myBean.class.simpleName
}
}
Integration sollte nicht wie das, was Sie haben, aussehen. Fügen Sie einen Testfall hinzu und verwenden Sie dann 'when' und' then'. – dmahapatro
Was meinen Sie "Integration sollte nicht wie das aussehen, was Sie haben". Mein Testfall hat wann und dann ... –
Hallo. Irgendwelche Glück mit diesem Problem? Haben Sie einen Weg gefunden, es zum Laufen zu bringen, oder einen Workaround? – Seagull