我正在尝试为我使用 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:
。
有人知道我做错了什么吗?