2017-10-17 15 views
2

J'ai essayé de tester mon code localement en installant un serveur Kafka et en envoyant des messages en utilisant un producteur, mais je me demande si je peux écrire un test unitaire pour cela morceau de code (vérifier si le message reçu par le consommateur est correct).Akka Streams Kafka - test unitaire pour le consommateur

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) 

Répondre

1

Vous pouvez tester votre code avec les outils suivants:

  • ScalaTest
  • scalatest-embedded-kafka: permet la création d'un Kafka exemple en mémoire qui fonctionne avec ScalaTest.
  • Akka Streams Testkit: fournit un TestSink.probe qui peut inspecter et contrôler la demande des éléments de flux (c'est-à-dire, des messages).

Le projet Akka Streams Kafka utilise ce qui précède dans ses propres tests. Jetez un oeil à son IntegrationSpec, que vous pouvez adapter à vos besoins.