How to test external tasks logic

Hi all.
Help me pls with understanding of testing external tasks.
I have camunda based on spring boot which integrate with external systems that I couldn’t modify. I ineracte with this systems asynchroniously using its REST API to start process some task (it may take some minutes or hours), AMQP to get answer and External Service Task in diagram that provide logic of communication.
I create workers inside my Camunda Spring Boot application. Workers have executor inside and process taks in multiple threads for parallel processing.

There is example code of my worker
// Part code of MyWorkerBean
ExternalTaskService externalTaskService = engine.getExternalTaskService();
ExecutorService executor = Executors.newFixedThreadPool(THREADS);    

@Scheduled(fixedRate = 30000)
public void runWorker() {
    List<LockedExternalTask> tasks = externalTaskService.fetchAndLock(10, WORKER_ID).topic(TOPIC_ID, LOCK_TIME).execute();
    for (LockedExternalTask task : tasks) {
        executor.submit(() -> {
            try {
                // Call of REST API to start processing task. It may takes up to 30sec (limited by connection timout)
                // There are we also store information about task in DB to handle response from AMQP
            } catch (Throwable t) {
                externalTaskService.handleFailure(task.getId(), WORKER, t.getMessage(), 0, 0);
            }
        });
    }
}

To test processes I use org.camunda.bpm.scenario.
When process came to external task, I mock it to call explicity my worker.

Call of worker
when(saRfmFlowProcess.waitsAtServiceTask("external_task")).thenReturn(task->{
    myWorkerBean.runWorker();
    amqpResultHandler.receiveResult(result)
});
Call of AMQP result handler
// AmqpResultHandlerBean
public void receiveResult(Result result){
    // Get information from DB about task which waits to receive this result
    // Complete externalTask and pass result to camunda process
}

So problem is that worker start handling asyncroniously and when I try to send result to my external task using expicity call of amqpResultHandler that may have not information about task yet because executor still not complete the future.
Is there design problem or some one else? How to force scenario wait when executor completes future or may be I have to test it in another way?