我正在尝试为注入(inject)了 spring bean 的服务编写集成测试。 spring bean 定义在 resources.groovy .我的服务正在使用的 bean 似乎没有在我的集成测试中被注入(inject),但是当我运行 grails run-app 时它被很好地注入(inject)了。 .

这是一个最小的失败示例:
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 版本信息:
$ grails -v 
| Grails Version: 3.1.9  
| Groovy Version: 2.4.7 
| JVM Version: 1.8.0_92 

更新:

Spring 似乎可以很好地注入(inject)其他服务。如果我在 MyService 中声明另一个服务,它被注入(inject)。
class MyService { 
  def myBean 
  def myOtherService 
 
  def serviceMethod(){ 
    myBean.class.simpleName 
  } 
} 

请您参考如下方法:

我可能迟到了……但是,对于 future 的读者,请尝试设置 grails.gorm.autowiretrue在您的 application.yml


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!