誰かが助けてくれるか、似たようなことをしたかどうか疑問に思っています。カスタム ClobFactory から Oracle CLOB を返すモックを作成しようとしています。次のコードを使用して CLOB を作成しています
CLOB clob = CLOB.createTemporary(connection, false, CLOB.DURATION_SESSION);
try (final Writer clobWriter = clob.setCharacterStream(1)) {
clobWriter.write(profile);
} catch (IOException e) {
throw new SQLException(e);
}
return clob;
そして私のテストでは、次のモックを設定しました
@Mock OracleDataSource dataSource;
@Mock CreateProfileParameters parameters;
@Mock ClobDBAccess clobDbAccess;
@Mock OracleConnection connection;
@Mock ClobFactory clobFactory;
@Mock CLOB clob;
@Mock Writer clobWriter;
....
when(dataSource.getConnection()).thenReturn(connection);
when(CLOB.getDBAccess(connection)).thenReturn(clobDbAccess);
when(clobDbAccess.createTemporaryClob(connection, false, CLOB.DURATION_SESSION, (short) 0)).thenReturn(clob);
when(CLOB.createTemporary(connection, false, CLOB.DURATION_SESSION)).thenReturn(clob);
when(ClobFactory.getClob(connection, dataString)).thenReturn(clob);
しかし、テストが実行されるたびに NullPointerException を取得し続け、2 行目を指します -
Stacktrace was: java.lang.NullPointerException
at oracle.sql.CLOB.getDBAccess(CLOB.java:1525) ...
誰かが前にこのようなことを試したことがありますか? それとも、モックする必要がある別のオブジェクトを見逃していますか?