作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到关于 allAny()
的任何我能理解的文档。 official文档将其描述为“使用 any() 而不是 eq() 作为简单参数提供的匹配器的特殊匹配器”。我不明白这是什么意思。
我有一条线
every { mockObject.method(any(), any(), any(), any(), any(), any(), any(), any(), any()) } returns 0
我认为 allAny()
可能能够取代 any()
的重复使用,当然 mockObject.method(allAny())
是语法错误,因为参数太少。
那么allAny()
有什么用呢?
最佳答案
Mockk 是一个很棒的库,但官方文档中的一些示例没有提供原始的模拟类。这导致歧义。文档没有太大帮助。
假设 Car
类有一个方法 fun accelerate(fromSpeed: Int, toSpeed: Int)
。在这种情况下,使用 allAny()
参数会产生语法错误。
但是,如果我们的accelerate
方法具有toSpeed
或fromSpeed
的默认值,编译器不会报错。
fun accelerate(fromSpeed: Int, toSpeed: Int = 100) { /* ... */ }
让我们进行如下测试。
val car = mockk<Car>(relaxed = true)
car.accelerate(fromSpeed = 10, toSpeed = 20)
car.accelerate(fromSpeed = 30)
// will pass
verify(atLeast = 2) { car.accelerate(allAny()) }
// will not pass
verify(atLeast = 2) { car.accelerate(any()) }
confirmVerified(car)
allAny
将无缝通过,但 any
不会。 any
接受 fromSpeed
的所有值,但不接受 toSpeed
的所有值。
Verification failed: call 1 of 1: Car(#1).accelerate(any(), eq(100))). 1 matching calls found, but needs at least 2 calls
Calls:
1) Car(#1).accelerate(10, 20)
2) Car(#1).accelerate(30, 100)
希望对您有所帮助。
关于kotlin - mockk的allAny()是如何使用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72778774/
我是一名优秀的程序员,十分优秀!