3
Это мой классКак поиздеваться макетом Spring JDBC, когда мы переходим с параметром (RowMapper)
@Repository
public class JdbcRolesDao implements RolesDao{
private JdbcTemplate jdbcTemplate;
private static final String GET_USER_ROLES_QUERY = "select ROLE_CD from USER_ROLES where USER_ID = ? AND USER_DRCTRY = ?";
@Autowired
public JdbcRolesDao(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List<String> getRolesByUser(String userId, String directoryId){
List<String> roles = jdbcTemplate.query(
GET_USER_ROLES_QUERY , new RoleMapper(), new Object[]{userId, directoryId});
return roles;
}}
Это мой тестовый класс,
@RunWith(PowerMockRunner.class)
@PrepareForTest({JdbcRolesDao.class})
public class JdbcRolesDaoTest {
@Mock
private DataSource datasource;
@Mock
private JdbcTemplate jdbcTemplate;
private JdbcRolesDao jdbcRolesDao;
private static AuthenticationResourceTest2 authenticationResourceTest;
private static final String GET_USER_ROLES_QUERY = "select ROLE_CD from USER_ROLES where USER_ID = ? AND USER_DRCTRY = ?";
@BeforeClass
public static void init(){
authenticationResourceTest = new AuthenticationResourceTest2();
}
@Before
public void initMocks() throws Exception {
MockitoAnnotations.initMocks(this);
PowerMockito.whenNew(JdbcTemplate.class).withAnyArguments().thenReturn(jdbcTemplate);
jdbcRolesDao = new JdbcRolesDao(datasource);
}
@Test
public void getRolesByUserTest(){
PowerMockito.when(jdbcTemplate.query(anyString(), any(RowMapper.class),any(Object[].class))).thenReturn(authenticationResourceTest.getDummyRoles());
List<String> configList = jdbcRolesDao.getRolesByUser("UserId", "DirectoryId");
if(configList != null)
System.out.println("not null "+configList.size());
//assertThat(configList, Matchers.hasSize(1));
}}
Я получаю список с 0 размером, но это должно быть одно.
Когда я удалил информацию Oject [] {} из исходного кода и тестового кода, он отлично работает.
Я где-то не так в насмешливой информации об Oject [], может кто-нибудь, пожалуйста, направить меня.
Он не работает с Matchers.anyObject() также –
Я пробовал вот так, и он работал, PowerMockito.when (jdbcTemplate.query (Matchers.anyString(), Matchers.any (RowMapper.class), Matchers.anyObject())). ThenReturn (authenticationResourceTest.getDummyRoles()); Единственное различие заключается в том, что у меня нет PowerMockito.whenNew. Я думаю, что это не требуется, поскольку у него уже есть аннотация @Mock – jAvA