Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC模拟钥匙夹_Java_Spring_Jdbc - Fatal编程技术网

Java JDBC模拟钥匙夹

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

正在尝试具有密钥持有者的模拟方法。但是keyHolder是空的。这个方法是有效的。请帮忙。需要修改一些测试方法

@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)你有解决方案吗。。我也面临同样的问题。。请提出建议。您是否找到了解决方案?谢谢您的回复。我离开了项目,无法验证您的答案是否有帮助。