Как я могу сделать частичное издевательство над бобами - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий класс JUNIT

@RunWith(SpringJUnit4ClassRunner.class)
@Configuration
@ContextConfiguration(locations = { "classpath:junit-xxx.xml", "classpath:junit-xxxxx.xml" })
public class TestFictionalClass
{

@Autowired   // I changed this to @Mock so the first "when" below works
private MyService mService


@Before
    @Transactional
    public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);

         Mockito.when((mService).myMockedMethod(Mockito.any(String.class)))
        .thenReturn("Hello");

        Mockito.when((mService).myOtherRealMethod(Mockito.any(BigDecimal.class), Mockito.any(BigDecimal.class))).thenCallRealMethod();

}

Здесь я пытаюсь сделать один из методов, так что он всегда возвращает значение "привет", но я хочу, чтобы другой метод в классе выполнялсяобычно.Проблема Я получаю следующую ошибку во втором методе

org.mockito.exceptions.base.MockitoException: Невозможно вызвать абстрактный реальный метод для объекта Java!Вызов реальных методов возможен только при манипулировании неабстрактным методом.

Как я могу насмехаться над рассматриваемым классом, чтобы переопределить значение, возвращаемое одним из его методов?

Спасибо

PS: я использую Mockito и Spring MVC

1 Ответ

0 голосов
/ 26 февраля 2019

Вместо @Mock используйте аннотацию @Spy.Шпионаж дает возможность издеваться только над определенными методами (с «когда-то») и оставлять других работать как есть.

Подробнее о шпионаже: ссылка .

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