### Question:
BatchingMessageHandler implements Runnable, LifecycleMessageHandler<ReceivedInstantClusterIdAwareMessage<?>> { @Override public void start( ClusterId clusterId ) throws Throwable { handler.start( clusterId ); job.start(); } BatchingMessageHandler( LifecycleMessageHandler<ReceivedInstantClusterIdAwareMessage<?>> handler,
            BoundedPriorityQueue.Config inQueueConfig, Config batchConfig, Function<Runnable,ContinuousJob> jobFactory,
            LogProvider logProvider ); @Override void start( ClusterId clusterId ); @Override void stop(); @Override void handle( ReceivedInstantClusterIdAwareMessage<?> message ); @Override void run();  }### Answer:
@Test public void shouldDelegateStart() throws Throwable { BatchingMessageHandler batchHandler = new BatchingMessageHandler( downstreamHandler, IN_QUEUE_CONFIG, BATCH_CONFIG, jobSchedulerFactory, NullLogProvider.getInstance() ); ClusterId clusterId = new ClusterId( UUID.randomUUID() ); batchHandler.start( clusterId ); Mockito.verify( downstreamHandler ).start( clusterId ); }
@Test public void shouldStartJob() throws Throwable { BatchingMessageHandler batchHandler = new BatchingMessageHandler( downstreamHandler, IN_QUEUE_CONFIG, BATCH_CONFIG, jobSchedulerFactory, NullLogProvider.getInstance() ); ClusterId clusterId = new ClusterId( UUID.randomUUID() ); batchHandler.start( clusterId ); Mockito.verify( mockJob ).start(); }