Akka Streams Kafka - юнит-тест для потребителя
Я пытался проверить свой код локально, настроив сервер Kafka и отправив сообщения с использованием производителя, но мне интересно, есть ли способ, которым я могу написать модульный тест для этого куска кода (проверить, было ли сообщение получено потребитель прав).
val consumerSettings = ConsumerSettings(system,
new ByteArrayDeserializer, new StringDeserializer)
.withBootstrapServers("localhost:9092")
.withGroupId("group1")
.withProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest")
val done = Consumer.committableSource(consumerSettings,
Subscriptions.topics("topic1"))
.map { msg =>
msg.committableOffset.commitScaladsl()
}
.runWith(Sink.ignore)
1 ответ
Вы можете проверить свой код с помощью следующих инструментов:
- ScalaTest
- https://github.com/manub/scalatest-embedded-kafka: позволяет создать экземпляр Kafka в памяти, который работает со ScalaTest.
- Akka Streams Testkit: предоставляет
TestSink.probe
который может проверять и контролировать спрос на элементы потока (например, сообщения).
Проект Akka Streams Kafka использует вышеупомянутое в своих собственных тестах. Посмотрите на его IntegrationSpec
, который вы можете адаптировать под свои нужды.