Java JDBC模拟钥匙夹
正在尝试具有密钥持有者的模拟方法。但是keyHolder是空的。这个方法是有效的。请帮忙。需要修改一些测试方法Java JDBC模拟钥匙夹,java,spring,jdbc,Java,Spring,Jdbc,正在尝试具有密钥持有者的模拟方法。但是keyHolder是空的。这个方法是有效的。请帮忙。需要修改一些测试方法 @Autowired private KeyHolderFactory factory; @Override public Integer createRss(String url) throws Exception { KeyHolder holder = factory.newKeyHolder(); try { jdbcTemplate.upda
@Autowired
private KeyHolderFactory factory;
@Override
public Integer createRss(String url) throws Exception {
KeyHolder holder = factory.newKeyHolder();
try {
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(CREATE_RSS, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, url);
return ps;
}
}, holder);
} catch (DataAccessException e) {
throw new Exception("Rss already exist");
}
return holder.getKey().intValue();
}
这是我的测试机构。试图模仿钥匙扣,但不起作用
public class RSSDaoImplTest {
@InjectMocks
private RSSDaoImpl target;
@Mock
private KeyHolder keyHolder;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
this.mockDS = Mockito.mock(DataSource.class);
this.mockJT = Mockito.mock(JdbcTemplate.class);
target = new RSSDaoImpl();
target.setJdbcTemplate(mockDS);
target.setJdbcTemplate(mockJT);
}
@Test
public void testCreateRss() throws Exception {
Mockito.when(mockJT.update(Mockito.any(PreparedStatementCreator.class), Mockito.any(KeyHolder.class)))
.thenReturn(1);
Mockito.doReturn(1).when(keyHolder).getKey().intValue();
int actual = target.createRss("test");
assertEquals(1, actual);
}
}
在stackoverflow上找不到任何解决方案。提前感谢您可以尝试以下代码:
Mockito.when(keyHolderFactoryMock.newKeyHolder()).thenReturn(keyHolderMock);
Mockito.when(keyHolderMock.getKey()).thenReturn(1);
Mockito.when(jdbcTemplate.update(Mockito.any(PreparedStatementCreator.class), Mockito.any(KeyHolder.class))).thenReturn(1);
您正在模拟keyHolder而不是密钥,因此需要执行类似于
when(keyHolder).getKey(),然后返回(mykey)代码>你有解决方案吗。。我也面临同样的问题。。请提出建议。您是否找到了解决方案?谢谢您的回复。我离开了项目,无法验证您的答案是否有帮助。