spring-boot - 如何在 H2 嵌入式数据库中创建虚拟函数以进行集成测试
问题描述
我有一个连接到 Oracle 数据库的 Spring Boot 应用程序。该项目包含一个服务类(userService),它调用VALIDATEUSER(USERNAME IN VARCHAR2,PASSWD IN VARCHAR2)
oracle中的函数,如果用户有效则返回1,无效则返回0。
我需要在 h2 db 中创建相同的函数,该函数总是为我的集成测试返回 true。
基本上我想在 sql 脚本中创建函数并在集成测试期间加载它,如下所示:
@Test
@Sql(scripts={"classpath:/sql/createFunction.sql"})
public void testUserInfo() throws Exception {
// userService calls VALIDATEUSER function
userService.isUserValid("testdb", "testdb");
}
如何在 h2 中创建函数 VALIDATEUSER?
提前致谢。
解决方案
您可以在H2中执行以下SQL来创建一个接受两个VARCHAR
参数并返回INTEGER
结果1的函数。
CREATE ALIAS VALIDATEUSER AS $$int validateUser(String name, String password) { return 1; }$$
推荐阅读
- java - 为什么我的素数测试在随机化 BigInteger 时经常失败?
- html - 当大型项目跨越多行时,您可以控制网格行大小吗?
- javascript - 服务中的角度异步等待不起作用
- python - tkinter 将输入更改为 int
- vim - 如何在vim(coc)自动完成中上下移动
- python - 如何使用 Wagtail 管理员以编程方式在页面创建时选择父级?
- flutter - 如何将变量分配给颤振 Navigator.push(context, variable);
- python - 如何在 Sublime Text 中禁用矩形框?
- api - 如何以安全的方式在授权标头中使用不记名令牌调用休息 api?示例代码 c# 请
- javascript - 有没有办法在 Photoshop 中扩展组?