NO
}
这是我们的测试类:
class CarTest : TestCase() {
fun testDrive() {
// mock car对象
val car = mockk()
// 设置监听
every { car.drive(Direction.NORTH) } returns Outcome.OK
// 执行
car.drive(Direction.NORTH)
// 验证
verify { car.drive(Direction.NORTH) }
// 双重验证
confirmVerified(car)
}
}
- 可以看到
Mockk
使用了 Lambda 语句,这让代码实现变的很美观。 - 其次
every{..}
语句用来设置监听,在Mockito
中,它是when
,其实作用是一样的,回调你想要的操作 - 使用
verify{..}
进行验证,这是各个测试框架都通用的字段 - 有个
confirmVerified
用来确认你的mock对象有没有被执行,因为前面已经有verify
语句了,这里相当于一个二次确认,加不加都没什么关系
mockk框架遵循 mock - 监听 - 执行 - 验证 的流程,所以如果你之前已经学习过 Mockito,那么你将更加容易上手mockk。
2.3 DSL
2.3.1 mock 普通对象
通过语句
mockk<T>(...)
来mock一个对象,例如:
val car = mockk()
你可以使用
mockk()
来代替任何mock对象,比如说一个参数,下面我们要监听当执行调用某个方法时,返回一个 Car 实例:
every { … } return Car()
如果我们不想这样做(因为可能会因为实例化太麻烦),可以这样写:
every { … } return mockk()
我们可以在
mockk<T>()
构建时,填入一些参数,它的构造方法可填参数有这些:
inline fun mockk(
name: String? = null,
relaxed: Boolean = false,
vararg moreInterfaces: KClass<*>,
relaxUn
版权归原作者 梦想月薪过万123 所有, 如有侵权,请联系我们删除。