Mockito вызывает реальный метод в насмешливом контексте Javalin - PullRequest
0 голосов
/ 18 октября 2019

У меня действительно странное поведение. Похоже, что Mockito вызывает реальный метод для ложного класса, в результате чего возникает исключение NullPointerException. Я издеваюсь над объектом Context, присутствующим в Javalin http Framework для Java.

Это минимальный код, который приводит к исключению.

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)

Но это не должно вызывать реальный код! Что происходит?

1 Ответ

0 голосов
/ 18 октября 2019

Вы не добавляете тесты правильно. Вместо того, чтобы создавать их в методе main, создайте тестовый класс, а затем аннотируйте ваши тесты аннотацией @Test (для этого потребуется JUnit). После этого вы сможете запускать тесты, используя вашу IDE.

...