@Test
public void acknowledgeAndMonitorNullCommandResponseWhenShouldAcknowledge() {

    Mockito.when(autoAckTarget.getIssuedAcknowledgementLabel()).thenReturn(Optional.of(ACKNOWLEDGEMENT_LABEL));
    final var source = Mockito.mock(Signal.class);
    final var thingId = ThingId.generateRandom();
    Mockito.when(source.getEntityId()).thenReturn(thingId);
    Mockito.when(source.getDittoHeaders()).thenReturn(dittoHeaders);
    Mockito.when(mappedOutboundSignal.getSource()).thenReturn(source);
    final Acknowledgement expectedResponse =
            exceptionConverter.convertException(MessageSendingFailedException.newBuilder()
                            .message("Message sending terminated without the expected acknowledgement.")
                            .description("Please contact the service team.")
                            .build(), ACKNOWLEDGEMENT_LABEL, thingId,
                    dittoHeaders);
    final var expectedException = MessageSendingFailedException.newBuilder()
            .message("Message sending terminated without the expected acknowledgement.")
            .description("Please contact the service team.")
            .build();
    final Sending underTest = new Sending(sendingContext, CompletableFuture.completedStage(null), logger);
    final Optional<CompletionStage<CommandResponse>> result = underTest.monitorAndAcknowledge(exceptionConverter);
    Mockito.verify(publishedMonitor).failure(externalMessage, expectedException);
    Mockito.verify(acknowledgedMonitor)
            .failure(Mockito.eq(externalMessage), Mockito.any(DittoRuntimeException.class));
    assertThat(result).hasValueSatisfying(
            resultFuture -> assertThat(resultFuture).isCompletedWithValue(expectedResponse));
}