【问题标题】:Timeout on unit test with TransactionalOperator (Kotlin coroutines)使用 TransactionalOperator 进行单元测试超时(Kotlin 协程)
【发布时间】:2021-06-22 15:16:42
【问题描述】:

我有一个如下所示的事务范围 (Spring docs),并且可以正常工作:

class PersonRepository(private val operator: TransactionalOperator) {

    suspend fun initDatabase() = operator.executeAndAwait {
        insertPerson1()
        insertPerson2()
    }
 }

但是当我尝试像这样在我的测试中模拟 TransactionalOperator 时:

val transactionalOperator = mockk<TransactionalOperator>(relaxed = true)

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

有人有在反应式事务管理的编程变体上使用测试和模拟的示例吗?

谢谢!

【问题讨论】:

    标签: spring kotlin


    【解决方案1】:

    希望对您有所帮助,我使用了以下构造:

    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() } }
    

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 2018-04-20
      • 2020-04-24
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多