【发布时间】:2016-12-03 12:58:11
【问题描述】:
我正在尝试为注入了 spring bean 的服务编写集成测试。 spring bean 在resources.groovy 中定义。我的服务正在使用的 bean 似乎没有在我的集成测试中被注入,但是当我运行 grails run-app 时它被很好地注入。
这是一个最小的失败示例:
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 似乎可以很好地注入其他服务。如果我在MyService 中声明另一个服务,它就会被注入。
class MyService {
def myBean
def myOtherService
def serviceMethod(){
myBean.class.simpleName
}
}
【问题讨论】:
-
集成不应像您所拥有的那样。添加一个测试用例,然后使用
when和then。 -
你是什么意思“集成不应该像你所拥有的那样”。我的测试用例确实有 when 和 then...
-
你好。这个问题有运气吗?您是否找到了使其工作的任何方法或解决方法?