当前位置: 首页 > 知识库问答 >
问题:

使用Spring Security性对Spring数据JPA存储库进行单元测试

单于轶
2023-03-14

我有一个Spring Data JPA存储库,只要不添加Spring Security性依赖项(spring-boot-starter-security)并在存储库上添加相应的方法授权注释,单元测试就可以正常工作。添加后,在运行单元测试时,我会得到一个AuthenticationCredentialsNotFound异常。

如何在单元测试中“验证”对存储库方法的调用

共有1个答案

储仲渊
2023-03-14

我在这里找到了一个要做什么的示例:https://github.com/spring-projects/spring-data-examples/blob/master/jpa/security/securityintegrationtests.java

我的测试现在运行良好,只要在调用存储库上的方法之前,我首先对具有所需角色的用户进行身份验证,如下所示:

SecurityContextHolder.getContext()
    .setAuthentication(new UsernamePasswordAuthenticationToken(
        "admin",
        "password",
        Collections.singleton(new SimpleGrantedAuthority("ROLE_ADMIN"))));

// Make calls to repository methods that require the admin role
 类似资料:
  • 但是有没有一种方法可以用我的SQL存储库做同样的事情,并让EntityManger对测试数据库执行nativeQuery呢? 我还没弄明白。

  • 首先,我是Spring Hibernate开发的新手。遵循了很多教程书籍,我创建了一个主要基于Spring、Hibernate标准的示例应用程序,我已经开始为Repository(DAO)方法编写一些测试用例,即查找、查找、保存、删除。 当我执行测试类时,这真是太疯狂了,并不是所有的测试用例都能正确地为ex执行。尤其是find 当我完全执行以上所有测试用例时 甚至更新测试用例的行为也很奇怪,因为在

  • 我正在开发一个基于spring boot的webservice,其结构如下: 控制器(REST)-->服务-->存储库(如某些教程中所建议的)。

  • 是否有一种方法可以使通用Spring数据JPA存储库正确处理类似的方法?例如只返回狗,而不返回所有动物?或者至少,最好的变通方法是什么? 它的工作几乎完美,保存每一个动物在自己的桌子上,等等。唯一的问题是:同时返回水豚和狗。这个答案解释说: 这只有在域类使用单表继承时才起作用。我们在引导时能得到的关于domain类的唯一信息是它将是Product对象。因此,对于像findAll()甚至findBy

  • 我是Spring Data JPA的新手。我试图为存储库创建一个自定义方法,但是它确实抛出了一个异常。以下是我目前的实现: 这是我启动应用程序时发生的异常(我正在使用 Spring 启动)。