gpt4 book ai didi

kotlin - mockk的allAny()是如何使用的

转载 作者:行者123 更新时间:2023-12-05 03:22:13 24 4
gpt4 key购买 nike

我找不到关于 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 方法具有toSpeedfromSpeed 的默认值,编译器不会报错。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com