Mockito在模拟Javalin上下文上调用real方法
我的行为真的很奇怪。Mockito似乎正在对一个被模拟的类调用实方法,从而导致一个NullPointerException。我正在模拟Java的JavaLinHTTP框架中的上下文对象 这是导致异常的最小代码Mockito在模拟Javalin上下文上调用real方法,java,mocking,mockito,javalin,Java,Mocking,Mockito,Javalin,我的行为真的很奇怪。Mockito似乎正在对一个被模拟的类调用实方法,从而导致一个NullPointerException。我正在模拟Java的JavaLinHTTP框架中的上下文对象 这是导致异常的最小代码 import io.javalin.http.Context; import org.mockito.Mockito; public class Main { public static void main(String[] args) { Context ctx
import io.javalin.http.Context;
import org.mockito.Mockito;
public class Main {
public static void main(String[] args) {
Context ctx = Mockito.mock(Context.class);
Mockito.when(ctx.queryParam("hello")).thenReturn("test");
}
}
我明白了
但它不应该调用真正的代码!发生了什么事?您没有正确添加测试。不要在main方法中创建它们,而是创建一个测试类,然后用
@test
注释对您的测试进行注释(需要JUnit才能完成)。然后,您应该能够使用IDE运行测试。如果这是实际工作的最小代码,那么很清楚为什么这不工作。Mockito没有静态模拟,其他代码仍然能够调用新上下文(…)
来获取真正的Javalin对象。Tom,不确定您的意思,该代码不起作用,这是实际返回异常的最小示例。原因是我在下面描述的。
at io.javalin.http.Context.queryString(Context.kt:285)
at io.javalin.http.Context.queryParamMap(Context.kt:282)
at io.javalin.http.Context.queryParams(Context.kt:279)
at io.javalin.http.Context.queryParam(Context.kt:266)
at io.javalin.http.Context.queryParam$default(Context.kt:266)
at io.javalin.http.Context.queryParam(Context.kt)
at Main.main(Main.java:9)