如何模拟所有实现相同接口的 类,同时在 spring 中使用 Set 的自动装配?

How to mock all the classes that implement the same interface while using autowire for Set in spring?

具有以下 classes :

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 接口使用 mock,同时包含 class BC

使用构造函数注入而不是字段注入,然后创建两个模拟,将它们放在一个集合中,然后使用该集合调用构造函数。例如:

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));
    }

}