Частичное издевательство над классом - PullRequest
0 голосов
/ 24 мая 2018

Тестируемый класс:

public class A {
    public static String m1(String p1, String p2);

    public static String m2(String p1, String p2, Object p3) {
        //...other work involving p3
        String res;
        if(conditionA)
        {
            res = m1(p1,p2); 
        } else {
            res = //something else;
        }
        //continue work
    }
}

Подробности: Метод m1 выполняет вызов базы данных с «внутренними» (не внедренными) зависимостями от Hibernate и Configs.Существуют потребители методов m1 и m2, поэтому изменение подписи не вариант.На m1 / m2 не было написано тестов.

conditionA - это дистанционно «управляемые» стартовые ворота (которые я могу смоделировать).

Условие if - это то, что я добавилв последнее время и необходимо проверить поведение метода m2 при обоих значениях условия A.

То, что я ищу, - это способ предоставить ложную реализацию m1, при этом вызывая реальный метод m2.

Что бы я ни пытался сделать, чтобы издеваться над m1, я всегда получаю незаконченное исключение из заглушки PowerMockito.

1 Ответ

0 голосов
/ 24 мая 2018

Первый метод: Mockito

Вы должны сделать частичную насмешку.С mockito вы можете сделать:

A a = Mockito.spy(A.class);

Затем вы можете заглушить нужный метод насмешки, как это:

Mockito.doReturn("result").when(a).m1(...);

другой метод останется реальным.

Второй метод: PowerMockito

PowerMockito.mockStatic(A.class);
when(A.m1(...)).thenReturn("result");

Еще раз, другой метод останется реальным.

...