我在第 3 方库中有以下 Java 类:
public final class SomeFactory {
public static native someMethod1()
public static native someMethod2()
private SomeFactory() {
}
static {
System.loadLibrary("some_lib");
}
}
这会使我的测试崩溃,因为加载
some_lib
失败。
java.lang.UnsatisfiedLinkError: no some_lib in java.library.path: /usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
那么我该如何模拟这个类呢?我正在起诉 MockK 和 Kotest。
我尝试了
mockk()
、mockkStatic()
、mockkConstructor()
等的不同组合,但没有任何效果。我什至尝试过mockkStatic(System::class)
,但似乎它完全破坏了 JVM。
我所做的是创建一个新对象,它包装了原始对象:
object SomeWrapper {
fun someMethod1() = SomeFactory.someMethod1()
}
然后在 MockK 中,只需模拟对象即可:
mockkObject(SomeWrapper)
every { SomeWrapper.method1() } returns mockk()