2011-01-31 74 views
0

我有其被定义为这样的非服务类:将服务传递给grails中的非服务?

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

这有帮助吗? http://stackoverflow.com/questions/1703952/grails-how-do-you-unit-test-a-command-object-with-a-service-injected-into-it/ – 2011-01-31 09:00:27

回答

2

这似乎是一个奇怪的场景。 A在做什么? A有没有可能真的是服务?

我会建议做一个服务,在这种情况下,您可以注入B服务,按照正常使用。

我不认为做'新的B()'真的是有效的,除非B对任何东西(自动布线字段)没有依赖关系。也许在测试中注入B会更好?

+0

你可能是对的。它看起来像A *应该*是一项服务。 – 2011-01-31 16:49:39