simpleJDBCCall.returningResultSet("test", new RowMapper<SomeObject> {
@Override
public SomeObject mapRow(Resultset r, int i) throws sqlexception {
//-----some code----
return someObject;
}
}
我想使用mockito执行MapRow方法中编写的行
Mockito 用于存根方法,而不是真正用于 execute 方法。但这仍然是可能的:您可以使用 dynamic
Answer
来存根您的方法来调用传递对象的方法。
final var simpleJDBCCall = Mockito.mock(…);
when(simpleJDBCCall.returningResultSet(Mockito.anyString(), Mockito.any())).
.thenAnswer(i -> {
final RowMapper<SomeObject> rowMapper = i.getArgument(1);
rowMapper.mapRow(…, …); // pass your desired ResultSet and integer
});
现在在模拟实例上调用
returningResultSet
将立即调用第二个参数上的 mapRow
方法,并传递您指定的任何值。
但是请注意官方文档关于这种方式存根的说法:
另一个有争议的功能最初并未包含在 Mockito 中。我们建议简单地使用
或thenReturn()
进行存根,这应该足以测试/测试驱动任何干净简单的代码。thenThrow()