С этим оператором blah.testMe()
включает в себя when()
, он вызывает реальный метод:
when(blah.testMe(Matchers.any())).thenReturn("intercepted");
Чтобы избежать этого, вы должны использовать шаблон doReturn(...).when(...).methodToInvoke()
.
doReturn("intercepted").when(blah).testMe(Matchers.any()));
Вы заметили, что с этим синтаксисом: оператор blah.testMe()
не указан нигде. Так что это не называется.
Помимо этого вопроса, я думаю, вам не нужен шпион для проверки этого метода.
Шпионаж - это очень специфический инструмент для имитации, который вы используете только тогда, когда у вас нет выбора: вам нужно смоделировать тестируемый объект, что является плохой практикой, и вы не можете реорганизовать реальный код.
Но здесь вы можете просто сделать:
@Test
public void testTestMe(){
Blah blah = new Blah();
ArrayList<String> l = new ArrayList<String>();
l.add("oopsie");
assertEquals("hello oopsie",blah.testMe(l));
}