java如何使用@InjectMocks注入相同类型的依赖项?
我有一个User
类,它有一个具有两个相同类型参数的构造函数
public class User {
Dependency dependency1;
Dependency dependency2;
User(Dependency dependency1,Dependency dependency2){
this.dependency1=dependency1;
this.dependency2=dependency2;
}
public void test(){
dependency1.print();
dependency2.print();
}
}
在我的测试中,我有两个间谍依赖项,我希望它们像new User(dependency1,dependency2)
一样被注入
@ExtendWith(MockitoExtension.class)
public class InjectMocksTest {
@InjectMocks
User user;
@Spy
Dependency dependency1=new Dependency("dependent1");
@Spy
Dependency dependency2=new Dependency("dependent2");
@Test
void test(){
user.test();
}
}
但是我发现User
的dependency1和dependency2都是指测试中的dependency1,就像他们注射了new User(dependency1,dependency1)
那么,如何通过@InjectMocks
注释实现我想要的呢
# 1 楼答案
如果首先创建对象本身,并将参数设置为null,则可以使用字段注入诱使Mockito注入mock。这对我很有用:
输出:
然而,这种行为没有记录在案,所以我不确定我是否会依赖它