package com.github.davidmoten.rx.jdbc; import static org.mockito.Mockito.verify; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Test; import org.mockito.Mockito; import rx.schedulers.Schedulers; public class FetchSizeTest { @Test public void testMocked() throws SQLException { String sql = "select name, score from people"; Connection con = Mockito.mock(Connection.class); PreparedStatement ps = Mockito.mock(PreparedStatement.class); Mockito.when(con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)).thenReturn(ps); ResultSet resultSet = Mockito.mock(ResultSet.class); Mockito.when(ps.executeQuery()).thenReturn(resultSet); Mockito.when(con.getAutoCommit()).thenReturn(false); Mockito.when(con.isClosed()).thenReturn(false); ConnectionProvider cp = createConnectionProvider(con); Database db = Database.from(cp); db.select(sql) // // set batch size .fetchSize(3) // go .count() // .subscribeOn(Schedulers.immediate()) // go .subscribe(); verify(ps, Mockito.times(1)).setFetchSize(3); } private static ConnectionProvider createConnectionProvider(final Connection con) { return new ConnectionProvider() { @Override public Connection get() { return con; } @Override public void close() { } }; } }