У меня следующий набор классов.
@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, созданные с помощью этого ключевого слова, совершенно разные)
Кто-нибудь может мне помочь решить эту проблему? спасибо