如何使用具有更新权限的用户测试存储库并且测试需要向数据库添加记录
How to test a repository with a user that have update rights and the test needs tot add records to the database
我使用mysql和spring 5,spring-data-jpa和spring-boot和JUnit5。
这一定是一个常见问题,但我没有找到解决方案。
我必须用一个在数据库中只有更新权限的用户来测试一个存储库,
但是为了执行测试,我有一个 sql 脚本来注入要执行测试的记录数。
我如何使用具有创建权限的用户将记录添加到数据库 (mysql) 并使用仅具有更新权限的用户执行我的存储库测试。
亲切的问候,
弗兰克
您可以为同一个数据库定义两个不同的数据源:一个使用 update-rights 用户,另一个使用 create-rights 用户。
为了做到这一点,你可以看看:
以及:https://www.baeldung.com/spring-data-jpa-multiple-databases
一旦您定义了两个数据源及其相应的事务管理器,您就可以在@Transaction 注释配置中指定应用哪个事务管理器/数据源(之前的参考显示了 JUnit 测试的示例)。
另一方面,如果您不介意使用自定义的简化数据库环境来执行 junit 测试,那么使用 in-memory 数据库(如 H2)配置 spring 配置文件会更容易,您可以在其中对所有内容使用相同的用户。无论如何,这是数据库环境的简化,并且会错过在数据库 fine-grained 权限上测试您的代码(因为我认为这是您的目标之一)。
我使用mysql和spring 5,spring-data-jpa和spring-boot和JUnit5。
这一定是一个常见问题,但我没有找到解决方案。 我必须用一个在数据库中只有更新权限的用户来测试一个存储库, 但是为了执行测试,我有一个 sql 脚本来注入要执行测试的记录数。 我如何使用具有创建权限的用户将记录添加到数据库 (mysql) 并使用仅具有更新权限的用户执行我的存储库测试。
亲切的问候, 弗兰克
您可以为同一个数据库定义两个不同的数据源:一个使用 update-rights 用户,另一个使用 create-rights 用户。
为了做到这一点,你可以看看:
以及:https://www.baeldung.com/spring-data-jpa-multiple-databases
一旦您定义了两个数据源及其相应的事务管理器,您就可以在@Transaction 注释配置中指定应用哪个事务管理器/数据源(之前的参考显示了 JUnit 测试的示例)。
另一方面,如果您不介意使用自定义的简化数据库环境来执行 junit 测试,那么使用 in-memory 数据库(如 H2)配置 spring 配置文件会更容易,您可以在其中对所有内容使用相同的用户。无论如何,这是数据库环境的简化,并且会错过在数据库 fine-grained 权限上测试您的代码(因为我认为这是您的目标之一)。