我有3个服务
class Service1{
@Inject private Service2 service2;
}
class Service2{
@Inject private Service3 service3;
}
class Service3{
public Object test(){
...}
}
class TestService1{
//do a test and mock the methode in service3
when(service3.test()).doReturn(Something());
}
我必须模拟服务3中注入服务2中的方法,而服务1中注入方法 任何想法 ?我必须像直接测试一样,别无选择。
答案 0 :(得分:0)
由于最后一个服务是对rest服务的调用,因此我创建了一个接口IServiceC,然后对其进行2种实现,一个在main / src / java中,另一个在test / src / java中,并且所有服务均返回硬编码值。因为这里的复杂性是说好,我将注入所有服务,但不注入最后一个,并告诉第二层我注入您,但我也嘲笑您,等等...
管理起来非常复杂,使用模拟类实现,我不必关心这个主题,我使用arquillian,所有注入都将注入(我从war软件包中排除了默认实现,并将模拟实现添加到了战争)