Coroutine + MockK дразнит coroutineScope внутри рабочего блока - PullRequest
0 голосов
/ 10 февраля 2020

У меня следующий набор классов.

@Service
class A {

    @Autowired
    lateinit var b: B

    fun method1(a: Int) {

        //do some operation
        runBlocking {
            b.method2(this)
        }
        //do some operation
    }
}


class B{

    fun method2(scope: CoroutineScope){
        // do operation
    }
}

@SpringBootTest
class unitTest {

    @MockKBean
    lateinit var b: B

    @Test
    fun testM() {
        every {
            b.method2(mockkClass(CoroutineScope()::class))
        }returns "something"
    }
}

Мне нужно смоделировать вызов b.method2, который вызывается внутри A.method1. b.method2 принимает coroutineScope в качестве аргумента. Доступ к coroutineScope осуществляется через блокировку runBlock с ключевым словом this. Поэтому всякий раз, когда я пытаюсь смоделировать method2 в классе модульного тестирования, это дает мне некоторую ошибку из-за несоответствия coroutineScopes. (это потому, что сгенерированный coroutineScope и coroutineScope, созданные с помощью этого ключевого слова, совершенно разные)

Кто-нибудь может мне помочь решить эту проблему? спасибо

...