Coroutine + MockK模拟runBlocking内部的coroutineScope

时间:2020-02-10 08:25:44

标签: kotlin mockk

我正在学习以下课程。

@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作为参数。使用this关键字可以在runBlocking内部访问coroutineScope。因此,每当我尝试在单元测试类中模拟method2时,由于coroutineScopes不匹配,都会给我一些错误。 (这是因为模拟的coroutineScope和使用此关键字生成的coroutineScope完全不同)

有人可以指导我解决此问题吗?谢谢

0 个答案:

没有答案