Как это вообще работает?Насколько я понимаю, этого не должно быть.LDAPGroupAccessor инициализируется заново в классе или может быть инициализирован заново в самом конструкторе, он не внедряется, не является аргументом конструктора или инъекцией пружинного компонента.
Я знаю, что это возможно с помощью отражения, но как 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"));
}
}