gpt4 book ai didi

spring - 当我们传递参数(RowMapper)时如何模拟模拟Spring JDBC

转载 作者:行者123 更新时间:2023-12-02 04:37:02 24 4
gpt4 key购买 nike

这是我的类(class)

@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() 而不是 any(Object[].class)。 (导入 org.mockito.Matchers;)

关于spring - 当我们传递参数(RowMapper)时如何模拟模拟Spring JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41599532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com