2009-08-20 4 views
1

J'essaie d'écrire un test d'intégration pour un service qui utilise une passerelle pour envoyer des requêtes à une file d'attente. La passerelle est câblé à la file d'attente en utilisant l'intégration de printemps resources.xml:Test Grails Spring Integration

<gateway 
      service-interface="WebRequestService" 
      id="webRequestGateway" 
      default-request-channel="queueChannel" /> 

En utilisant l'exemple par Russ Miles http://blog.springsource.com/2008/12/11/spring-integration-in-grails-part-1/, j'ai pu écrire un test d'intégration du contrôleur de passerelle entre l'utilisation de DI.

Cependant, lorsque j'essaie de le faire avec un test d'intégration de service, je n'obtiens pas le DI pour la passerelle, et je ne peux pas l'initialiser car c'est une interface. Puis-je avoir accès au bean à partir d'un test d'intégration de services?

Ou y a-t-il un moyen de l'initialiser dans le service?

Répondre

0

Vous pouvez obtenir le contexte de l'application de la manière suivante:

import grails.test.* 
import grails.spring.BeanBuilder 

class FooBarTests extends GrailsUnitTestCase { 
    boolean transactional = false 

    void testSomething() { 
     def bb = new BeanBuilder() 
     bb.loadBeans("classpath:*.spring.resources.groovy") 

     def applicationContext = bb.createApplicationContext() 
    } 
} 
+0

Je suis désolé, les coutures de contexte d'application à vide :-( –

2

En effet, il est vide, Essayez ce, suivant les conseils de Luke Daley sur la Grails liste de diffusion:

Dans votre classe de test, déclare:

def grailsApplication 

Ensuite, vous obtenez le contexte d'application comme ceci: grailsApplication.mainContext

Il fonctionne pour moi ;-)

Questions connexes