0

我正在尝试为使用 Quarkus、Panache 和 Kotlin 创建的 REST 资源创建测试。测试首先将一些实体写入数据库,然后执行应该返回这些实体的 REST 调用。

但是 REST 资源似乎无法找到实体。如果我在测试中直接查询数据库,实体就在那里。

我的代码如下所示:

@Entity
open class TestEntity : PanacheEntity() {

    companion object : PanacheCompanion<TestEntity, Long> {

        fun createTestString(): String {
            return "Found ${TestEntity.count()} test entities: ${
                TestEntity.listAll().joinToString(", ") { it.value }
            }"
        }
    }

    @Column(nullable = false)
    lateinit var value: String

}
@Path("/test")
@Produces(MediaType.TEXT_PLAIN)
@Transactional
class TestResource {

    @GET
    fun test() = TestEntity.createTestString()

}
@QuarkusTest
@QuarkusTestResource(H2DatabaseTestResource::class)
@TestTransaction
class TestResourceTest {

    @Test
    fun print() {
        val entity1 = TestEntity()
        entity1.value = "foo"
        entity1.persist()

        val entity2 = TestEntity()
        entity2.value = "bar"
        entity2.persist()

        println(
            "TEST: ${TestEntity.createTestString()}"
        )

        RestAssured.given()
            .`when`().get("/test")
            .then()
            .statusCode(200)
            .body(CoreMatchers.startsWith("Found 2 test entities"))
    }
}

测试println()中的打印TEST: Found 2 test entities: foo, bar。但是 REST 调用返回Found 0 test entities:

有谁知道我做错了什么?

4

0 回答 0