### Question:
SnowdropKafkaConsumer implements KafkaConsumer<K, V> { @Override public void partitionsAssignedHandler(Consumer<Set<Partition>> handler) { Objects.requireNonNull(handler, "Handler cannot be null"); delegate.partitionsAssignedHandler(mutinyTopicPartitions -> { Set<Partition> partitions = mutinyTopicPartitions .stream() .map(SnowdropPartition::new) .collect(Collectors.toSet()); handler.accept(partitions); }); } SnowdropKafkaConsumer(io.vertx.mutiny.kafka.client.consumer.KafkaConsumer<K, V> delegate); @Override Mono<Void> subscribe(String topic); @Override Mono<Void> subscribe(Collection<String> topics); @Override Mono<Void> assign(Partition partition); @Override Mono<Void> assign(Collection<Partition> partitions); @Override Mono<Void> unsubscribe(); @Override Flux<String> subscriptions(); @Override Flux<Partition> assignments(); @Override Flux<PartitionInfo> partitionsFor(String topic); @Override void partitionsRevokedHandler(Consumer<Set<Partition>> handler); @Override void partitionsAssignedHandler(Consumer<Set<Partition>> handler); @Override Mono<Void> seek(Partition partition, long offset); @Override Mono<Void> seekToBeginning(Partition partition); @Override Mono<Void> seekToBeginning(Collection<Partition> partitions); @Override Mono<Void> seekToEnd(Partition partition); @Override Mono<Void> seekToEnd(Collection<Partition> partitions); @Override Mono<Long> position(Partition partition); @Override Mono<Long> committed(Partition partition); @Override Mono<Long> beginningOffset(Partition partition); @Override Mono<Long> endOffset(Partition partition); @Override Mono<Long> timeOffset(Partition partition, long timestamp); @Override Mono<Void> commit(); @Override Mono<Void> close(); @Override @SuppressWarnings("unchecked") // SmallRye API returns KafkaConsumer without generics Mono<T> doOnVertxConsumer(Function<io.vertx.kafka.client.consumer.KafkaConsumer<K, V>, T> function); @Override Mono<ConsumerRecord<K, V>> mono(); @Override Flux<ConsumerRecord<K, V>> flux(); @Override ReadStream vertxReadStream();  }### Answer:
@Test public void shouldAddPartitionsAssignedHandler() { given(mockMutinyConsumer.partitionsAssignedHandler(any())) .will(a -> { Consumer<Set<TopicPartition>> handler = a.getArgument(0); handler.accept(toSet( new TopicPartition("test-topic", 1), new TopicPartition("test-topic", 2) )); return mockMutinyConsumer; }); AtomicReference<Set<Partition>> partitions = new AtomicReference<>(); consumer.partitionsAssignedHandler(partitions::set); await() .atMost(Duration.ofSeconds(2)) .untilAtomic(partitions, is(notNullValue())); assertThat(partitions.get()).containsOnly( Partition.create("test-topic", 1), Partition.create("test-topic", 2) ); }