嗨,我的生产代码中有类似的内容。一个简单的方法将引发异常:
class Production {
fun doWork(): String {
throw IllegalArgumentException()
}
}
但是,当我使用Mockk模拟此Production
类时,它将运行基础的doWork()
方法,而不是模拟方法调用:
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
class Test {
@MockK
lateinit var production: Production
@Before
fun setup() {
MockKAnnotations.init(this)
}
@Test
fun test() {
every { production.doWork() } returns "Str"
assertEquals("Str", production.doWork())
}
}
测试失败,并显示java.lang.IllegalArgumentException
。 Mockk不应该在Production
类中嘲笑此方法调用吗?我感觉这可能是由于Mockito背景造成的误解。