使用 TransactionalOperator(Kotlin 协程)进行单元测试超时

Sil*_*Col 3 spring kotlin

我有一个如下所示的事务范围(Spring docs)并且我让它工作:

class PersonRepository(private val operator: TransactionalOperator) {

    suspend fun initDatabase() = operator.executeAndAwait {
        insertPerson1()
        insertPerson2()
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在测试中模拟 TransactionalOperator 时,如下所示:

val transactionalOperator = mockk<TransactionalOperator>(relaxed = true)
Run Code Online (Sandbox Code Playgroud)

每次我的测试需要使用运算符的方法时,我都会遇到超时。我也没有找到有关它的文档。

有人有对反应式事务管理的编程变体进行测试和模拟的示例吗?

谢谢!

小智 5

希望它有帮助,我使用了以下构造:

val reactiveTransactionManager = mockk<ReactiveTransactionManager>()
val transactionalOperator = TransactionalOperator.create(reactiveTransactionManager)

every { reactiveTransactionManager.getReactiveTransaction(any()) } answers { mono { mockk() } }
every { reactiveTransactionManager.commit(any()) } answers { mono { mockk() } }
every { reactiveTransactionManager.rollback(any()) } answers { mono { mockk() } }
Run Code Online (Sandbox Code Playgroud)