2014-04-17 74 views
0

我在resources.groovy定义1种豆Grails的 - 如何在注入集成测试中resources.groovy定义豆

cachedbean(serviceImpl) { 
    } 

在服务我使用这种方式

MyService{ 

     static transactional = false 
     def cachedbean 

     myMeth(){ 
     cachedbean.get("cacheKey") 
     } 
    } 

该作品但是当我尝试使用集成测试进行测试时,我在'get' cachedbean上得到了nullpointer例外。 get(“cacheKey”)。

它是如何工作的?

回答

0

而不是“新” -ing了服务实例,如果你让Grails的自动线的服务豆成你的集成测试类应该是自动连线的。

class MyServiceTests extends GroovyTestCase { 
    def myService 
    void testSomething() { 
     // myService should already be wired up 
    } 
} 
+0

工作。谢谢。 – user1298426

-1
  1. 目前还不清楚,如果你做了或没有根据您的示例代码,但是你需要在你的resources.groovy到完全限定了包和类的名称为“serviceImpl”除非你明确导入的包。

  2. 您可能需要在resources.groovy你的宣言的范围内添加行bean.autowire = "byName"

+0

1)我添加了serviceImpl的完全限定名称。 2)它在代码中工作,但仅仅在集成测试中失败。那么它是否会影响BY通过明确添加它? – user1298426

+0

它不应该通过添加'bean.autowire =“byName”',no来消极影响任何东西。我只是有一个想法,但:你是否参考了这项服务的二手?意思是,你正在测试另一个叫这个的服务吗?如果是这样,Spring并不是很聪明,知道要注入这个服务,毕竟你可能需要你的测试手动为'cachedBean'赋值。 – kevinmershon

+0

不,我直接调用这个服务方法。 – user1298426