首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试期间未保存Quarkus PanacheEntity

测试期间未保存Quarkus PanacheEntity
EN

Stack Overflow用户
提问于 2020-08-30 21:29:11
回答 1查看 255关注 0票数 1

我正在使用RestEasy进行Quarkus和Quarkus测试,在每次测试之前设置虚拟数据时都会遇到问题。

在调用端点之前,我尝试使用活动记录模式插入一个用户。在调用user.persistAndFlush() (或者只是简单地调用.persist())之后,当向User实体询问用户数时,它会正确地返回数据库中有一条记录。但是,当通过RestEasy调用端点时,它返回给我找不到具有该给定标识符的用户,实际上,当注销服务中该特定方法调用中的用户数时,根据Quarkus有0个用户。在我看来,带有@Test注释的方法和服务本身是否在不同的上下文中运行?这有点奇怪,我肯定遗漏了一些明显的东西。

下面是我的测试类的样子:

代码语言:javascript
复制
@QuarkusTest
@QuarkusTestResource(PostgreSQLDatabaseResource.class)
public class AuthenticationResourceTest {

  @TestHTTPEndpoint(AuthenticationResource.class)
  @TestHTTPResource
  URL url;

  @BeforeEach
  @Transactional
  public void setUp() {
    User.deleteAll();
  }


  @Test
  public void testWithNonExistingEmail() {
    AuthenticationChallenge invalidAuthRequest = AuthenticationChallenge.builder()
        .email("admin@admin.com")
        .password("something")
        .build();

    given()
        .when()
        .contentType(ContentType.JSON)
        .body(invalidAuthRequest)
        .post(url)
        .then()
        .statusCode(401);
  }

  @Test
  @Transactional
  public void testWithValidAuthenticationChallenge() {
    User user = User.builder()
        .name("admin")
        .role(Roles.ADMIN)
        .status(Status.ACTIVE)
        .password(BCrypt.withDefaults().hashToString(10, "admin".toCharArray()))
        .email("admin@admin.com")
        .build();

    user.persistAndFlush();

    given()
        .when()
        .contentType(ContentType.JSON)
        .body(AuthenticationChallenge.builder().email("admin@admin.com").password("admin").build())
        .post(url)
        .then()
        .statusCode(200)
        .log()
        .all();
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-03 23:37:54

在测试方法结束之前,您的用户不会被保存到数据库中,因为它是事务性的,事务在结束时被提交。

使用REST调用,您可以在事务外部查询数据库,因此您将不会拥有数据。

如果您想初始化一些对REST调用可见的数据,则需要在@BeforeEach方法中创建数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63657946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档