gpt4 book ai didi

java - 使用 Mockito 从数据库模拟 CLOB

转载 作者:行者123 更新时间:2023-11-30 11:28:00 25 4
gpt4 key购买 nike

想知道是否有人可以提供帮助或做过类似的事情。我正在尝试模拟从自定义 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,指向第二行 -

Stacktrace was: java.lang.NullPointerException
at oracle.sql.CLOB.getDBAccess(CLOB.java:1525) ...

有没有人试过这样的事情?还是我错过了另一个我应该模拟的对象?

最佳答案

方法 CLOB.getDBAccess(connection)CLOB 类的静态方法,因此不能用 Mockito 模拟。

您可以使用 Powermock 模拟静态.

关于java - 使用 Mockito 从数据库模拟 CLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19048912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com