2016-12-04 2 views
0

Имея следующие классы:Как издеваться над всеми классами, которые реализуют один и тот же интерфейс при использовании autowire для Set весной?

public class A { 
    @Autowired 
    private Set<IClient> clients; 
} 

public class B implements IClient { } 

public class C implements IClient { } 


@RunWith(MockitoJUnitRunner.class) 
public class Atest { 
    @InjectMocks 
    A a; 

    @Mock 
    IClient clients; 
} 

Как я могу использовать издевается для Set интерфейсов, которые будут включать в себя как класс B и C?

ответ

2

Используйте инжектор инжектора инжектора конструктора, затем создайте два макета, поместите их в набор и вызовите конструктор с этим набором. Например:

public class Atest { 
    private A a; 

    @Mock 
    private IClient mockAClient; 

    @Mock 
    private IClient mockBClient; 

    @Before 
    public void prepare() { 
     a = new A(new HashSet<>(Arrays.asList(mockAClient, mockBClient)); 
    } 

} 
Смежные вопросы

 Смежные вопросы