Метод mockK, возвращающий интерфейс Future - PullRequest
0 голосов
/ 21 января 2019

Здравствуйте, у меня есть следующая проблема.Я пытаюсь смоделировать вызов внедренного исполнителя для немедленного выполнения данного Callable.Позже в тесте приводятся аргументы методов, вызываемых внутри Callable, и утверждаются аргументы.Пример см. Ниже.

Maven 3, jdk 10-slim, mockk 1.9

    //this task should be executed by executor
    private val taskCaptor = slot<Callable<Boolean>>()
    private val asyncTaskExecutor: LazyTraceThreadPoolTaskExecutor = mockk<LazyTraceThreadPoolTaskExecutor>().apply {
        //this was my 1st try, but resutt was java.lang.InstantiationError: java.util.concurrent.Callable
        //every { submit(capture(taskCaptor)) } returns CompletableFuture.completedFuture(taskCaptor.captured.call())
        //every { submit(any()) } returns CompletableFuture.completedFuture(true)
        every { submit(ofType(Callable::class)) } returns FutureTask<Boolean>(Callable { true })
    }

позже я изменил интерфейс Callable на реализацию, которую я создал в тестируемом классе, и получилдругое исключение.С тем же кодом, что и выше, исключения были

java.lang.InstantiationError: java.util.concurrent.Future

, который является типом возврата метода submit.

Мой подход к насмешкам неверен?

...