首页 > 解决方案 > 如何在 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?

提前致谢。

标签: spring-booth2spring-test

解决方案


您可以在H2中执行以下SQL来创建一个接受两个VARCHAR参数并返回INTEGER结果1的函数。

CREATE ALIAS VALIDATEUSER AS $$int validateUser(String name, String password) { return 1; }$$

推荐阅读