如何模拟所有实现相同接口的 类,同时在 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 B
和 C
?
使用构造函数注入而不是字段注入,然后创建两个模拟,将它们放在一个集合中,然后使用该集合调用构造函数。例如:
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));
}
}
具有以下 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 B
和 C
?
使用构造函数注入而不是字段注入,然后创建两个模拟,将它们放在一个集合中,然后使用该集合调用构造函数。例如:
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));
}
}