我们正在将我们接触到的类迁移到 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
当我使用for调用该方法时exactly
。
我可以看到这在 Kotlin 中是一个好主意,因为我可以在那里使用命名参数,但是我似乎无法将解决方案翻译成 Java。