我有一个非服务类,其定义如下:
class A{
B b
A( B b ){ this.b = b }
}
其中B是Grails服务。在我的单元测试中,我尝试了这个:
A a = new A( new B() );
但出于某种原因,b
永远不会被设置,并且变量b [local, the argument to the mehod]
在运行测试时甚至在Intelli-J的调试器中也不可见。也就是说,我可以将参数重命名为service
,调试器将其显示为未定义。
当我尝试启动服务器时,我得到Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
,所以我假设这是相关的。
这里发生了什么?
答案 0 :(得分:2)
这似乎是一个奇怪的场景。 A在做什么? A是否真的是一种服务?
我建议制作A服务,在这种情况下,您可以按照正常使用方式将B服务注入其中。
我不认为做'new B()'真的有效,除非B对任何东西都没有依赖(自动装配的字段)。也许将B注入测试会更好吗?