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, который вы можете адаптировать под свои нужды.

Другие вопросы по тегам