Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mockito在模拟Javalin上下文上调用real方法_Java_Mocking_Mockito_Javalin - Fatal编程技术网

Mockito在模拟Javalin上下文上调用real方法

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

我的行为真的很奇怪。Mockito似乎正在对一个被模拟的类调用实方法,从而导致一个NullPointerException。我正在模拟Java的JavaLinHTTP框架中的上下文对象

这是导致异常的最小代码

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)