【发布时间】:2015-04-27 17:45:21
【问题描述】:
这个简单的方法将从数据库中检索到的Clob 的所有内容返回为String。
如何正确测试/模拟它,确保它始终返回 Clob 参数的完整内容(假设它的大小不会大于整数)?
import java.sql.Clob;
public class ClobUtils {
public static String clobToString(Clob clob) throws Exception {
if(clob.length() > Integer.MAX_VALUE) {
throw new Exception("Clob is too big to be handled by the application.");
}
// Assumes that Clob content can fit in the String
return clob.getSubString(1, Long.valueOf(clob.length()).intValue());
}
}
【问题讨论】:
-
我现在可以告诉你,你不能保证它,因为如果 clob.length() 大于 Integer.MAX_VALUE,你的代码将会失败
-
@ControlAltDel 好眼力。我会调查的。
-
@ControlAltDel 我们有一个约束,其中 XML 永远不会接近那个大小,但你的观点是有效的,所以我添加了应该修复逻辑的约束。我现在如何模拟那个 Clob?
-
有一种更简单的方法可以将 long 转换为 int
(int)clob.length()。 -
实现一个 Clob 并将其传递给方法。
标签: java unit-testing junit mocking