我们希望为使用Spring和Spring的项目编写测试。当我们在Kotlin中编码时,我们希望使用MockK而不是Mockito,因为它更适合Kotlin代码风格和最佳实践。
RabbitListenerTestHarness类为测试@RabbitListener提供了一些方便的特性,但是它返回了与MockK的Answer接口不兼容的Mockito的Answer接口的实现。
是否有一种使用MockK的Mockito答案的方法,例如一些用于互操作性的现有包装器?
考虑下面的示例侦听器:
class SampleListener {
@RabbitListener(id = "sampleReceiver", queues = ["testQueue"])
fun receiveMessage(message: Message) {
}
}而实际测试:
@SpringBootTest
class SampleTest(@Autowired val template: TestRabbitTemplate) {
@Autowired
lateinit var testHarness: RabbitListenerTestHarness
@Test
fun testRabbit() {
val spy = testHarness.getSpy<SampleListener>("sampleReceiver")
val answer: LatchCountDownAndCallRealMethodAnswer = testHarness.getLatchAnswerFor("sampleReceiver", 1)
// Mockito.doAnswer(answer).`when`(spy).receiveMessage(ArgumentMatchers.any())
every { spy.receiveMessage(any()) } answers { /* what goes here? */ }
template.convertAndSend("testQueue", "test")
}
}测试包含文档中提到的Mockito调用作为注释。我的问题是,如何使用从getLatchAnswerFor返回的答案对象来完成MockK存根?
发布于 2022-01-10 16:53:31
在消息侦听器周围添加您自己的代理可能更容易一些。
RabbitListenerEndpointRegistry获取容器https://stackoverflow.com/questions/70655814
复制相似问题