Spy объект Mockito вызывает реальный метод в «когда» - PullRequest
0 голосов
/ 09 апреля 2020

Тестируемая система

package com.nishant.spydemo;

public class SpyClass {

    public String getSomeValue() {
        return new JustAnotherClass().getVal("doesntmatter");
    }
}

Тест

package com.nishant.spydemo;

import static org.mockito.Mockito.when;
import static org.mockito.ArgumentMatchers.any;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Spy;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.Silent.class)
public class SpyTest {
    @Spy JustAnotherClass justAnotherClass = new JustAnotherClass();
    @InjectMocks SpyClass spyclass;

    @Test
    public void testTrySpy() {
        when(justAnotherClass.getVal(any(String.class))).thenReturn("change");
        String s = spyclass.getSomeValue();
        String s2 = s;
    }
}

JustAnotherClass

package com.nishant.spydemo;

public class JustAnotherClass {
    public String getVal(String string) {
        return "value";
    }
}

Я хочу получить "change" как значение строки 's' в Тест, но когда элемент управления достигает значения «когда (justAnotherClass.getVal»), он вызывает реальный метод.

Скажите, пожалуйста, как можно правильно смоделировать вызов justAnotherClass.getVal, не используя PowerMockito, и получить «изменение» вместо "значение".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...