java - Mockito 在模拟的 Javalin 上下文上调用真实方法

标签 java mocking mockito javalin

我的行为确实很奇怪。看起来 Mockito 正在调用模拟类上的真实方法,从而导致 NullPointerException。我正在模拟 Java 的 Javalin http 框架中存在的 Context 对象。

这是导致异常的最少代码。

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");
    }
}

我明白了

    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)

但它不应该调用真正的代码!这是怎么回事?

最佳答案

您并没有真正正确地添加测试。不要在 main 方法中创建它们,而是创建一个测试类,然后使用 @Test 注释来注释您的测试(为此需要 JUnit)。然后您应该能够使用 IDE 运行测试。

关于java - Mockito 在模拟的 Javalin 上下文上调用真实方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58446474/

相关文章:

java - 当其中一个抛出异常时如何防止执行runnables

java - 带有服务器发送事件的 JMeter 并行请求

python - 在模拟上设置属性不起作用

java - Java中一步步刷新JTable

javascript - 在 Java 中加载 JavaScript 初始化方法后获取 HTML 文件

android - 使用 Robolectric 和 Mockito 模拟 findViewById 响应

java - Mockito 可以验证参数是否具有某些属性/字段?

java - 使用 mockito 进行 Spring 服务单元测试

java - PowerMockito 模拟静态方法抛出异常

java - 在 Kotlin 中打开 getter 以将其与 Mockito 一起使用 - MissingMethodInvocationException