Kotlin 如何使用精确的值调用MockKKt.verify?

Kotlin 如何使用精确的值调用MockKKt.verify?,kotlin,mockk,Kotlin,Mockk,我们正在将接触到的类迁移到Kotlin,因此我们需要在Java测试类中模拟Kotlin类。我们使用io.mockk:mockk:1.9.3 为了验证调用至少x次,我们有一个包装器方法 public static void verify(MockkVerifier verifier, int atLeast) { MockKKt.verify(Ordering.UNORDERED, false, atLeast, Integer.MAX_VALUE, -1, 0, mockKVerific

我们正在将接触到的类迁移到Kotlin,因此我们需要在Java测试类中模拟Kotlin类。我们使用
io.mockk:mockk:1.9.3

为了验证调用至少x次,我们有一个包装器方法

public static void verify(MockkVerifier verifier, int atLeast) {
    MockKKt.verify(Ordering.UNORDERED, false, atLeast, Integer.MAX_VALUE, -1, 0, mockKVerificationScope -> {
        verifier.verify(mockKVerificationScope);
        return Unit.INSTANCE;
    });
}
这很好用。然而,对于一个完全包装n调用功能的方法,我唯一的想法是

public static void verifyExactly(MockkVerifier verifier, int exactly) {
    MockKKt.verify(Ordering.UNORDERED, false, exactly, Integer.MAX_VALUE, exactly, 0, mockKVerificationScope -> {
        verifier.verify(mockKVerificationScope);
        return Unit.INSTANCE;
    });
}
由于以下原因而失败

io.mockk.MockKException: specify either atLeast/atMost or exactly

    at io.mockk.MockKDsl.internalCheckExactlyAtMostAtLeast(API.kt:153)
    at io.mockk.MockKDsl.internalVerify(API.kt:113)
    at io.mockk.MockKKt.verify(MockK.kt:139)
    [...]
当我用
1
调用
的方法时,正好

我可以看出这在Kotlin中是一个好主意,因为我可以在那里使用命名参数,但是我似乎无法将解决方案转换为Java。

库可以

if (exactly != -1 && (atLeast != 1 || atMost != Int.MAX_VALUE)) {
    throw MockKException("specify either atLeast/atMost or exactly")
}
因此,必须指定1才能使
至少被忽略