我正在学习以下课程。
@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完全不同)
有人可以指导我解决此问题吗?谢谢