spring - 使用 TransactionalOperator 进行单元测试超时(Kotlin 协程)
问题描述
我有一个如下的事务范围(Spring docs),我让它工作:
class PersonRepository(private val operator: TransactionalOperator) {
suspend fun initDatabase() = operator.executeAndAwait {
insertPerson1()
insertPerson2()
}
}
但是当我尝试像这样在我的测试中模拟 TransactionalOperator 时:
val transactionalOperator = mockk<TransactionalOperator>(relaxed = true)
每次我的测试需要使用运算符的方法时,我都会超时。我也没有找到关于它的文档。
有人有在反应式事务管理的编程变体上使用测试和模拟的示例吗?
谢谢!
解决方案
希望它有所帮助,我使用了以下构造:
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() } }
推荐阅读
- python - 根据索引从熊猫系列列表中提取到另一个系列
- sql - Nested SQL Selects? DISTINCT from one column, and get the corresponding Mode for each value in another?
- javascript - TypeError .val() is not a function on my selected answer on Javascript
- node.js - How can I delete not verified emails in Firebase in web?
- javascript - 将布尔值从 vue 路由器传递到其组件
- react-native - realm react-native - 2 different databases/schemas
- aws-security-group - 如何限制 AWS 安全组出站规则
- javascript - Electron:在 Windows 上禁用粘贴
- php - 获取异常
- java - 代码运行,但它说的是错误的答案,无法继续使用我不明白的消息