【发布时间】:2018-10-29 15:30:53
【问题描述】:
这甚至是如何工作的? 根据我的理解,它不应该有。 LDAPGroupAccessor 正在类中进行新初始化,或者可以在构造函数本身中进行新初始化,它没有被注入,不是构造函数参数,不是 spring bean 注入。
我知道可以使用反射,但是 injectMocks 是如何注入它的呢?这不是违背了 DI 的目的吗?
@Component
public class AuthorizationHandler {
private LDAPGroupAccessor groupAccessor = new LDAPGroupAccessor();
public isUserAuthorized(String userId, String groupId){
return groupAccessor.isUserInGroup(userId, ldapGroup);
}
}
public class AuthorizationHandlerTest {
@InjectMocks
private AuthorizationHandler authorizationHandler;
@Mock
private LDAPGroupAccessor groupAccessor = new LDAPGroupAccessor();
@Before
public void setup() {
String authorizedUser = "authorizedUser";
Mockito.when(groupAccessor.isUserInGroup("authorizedUser", "someGroup")).thenReturn(true);
}
@Test
public void test1() {
Assert.assertEquals(true, authorizationHandler.isUserAuthorized("authorizedUser", "someGroup"));
}
}
【问题讨论】:
标签: java spring unit-testing dependency-injection mockito