@Mock
не применимо для локальной переменной. В любом случае зачем тебе издеваться? Я думаю, вам не нужен предмет для насмешки. Просто создайте тестовый объект Item
для ваших нужд. Скорее всего, издевательства не позволяют вызывать реальные методы.
Попробуйте вместо этого:
@Test
public void testCalculate() {
Item item = new Item();
Article article = new Article();
Article articleSpy = Mockito.spy(article);
Mockito.doReturn(item).when(articleSpy).prepareItem();
article.calculate();
}
Если вам действительно нужен шпион, чтобы вернуть макет, Item item = Mockito.mock(Item.class);
должен работать в Mocktio 1.10. Я бы не советовал вам это делать, потому что в большинстве случаев это не нужно. Большую часть времени вы можете упростить свой код (=> разработка через тестирование).
Если вам это абсолютно необходимо, это будет рабочий пример:
Item item = Mockito.mock(Item.class);
Mockito.when(item.getInfo()).thenReturn("bla bla");
Article article = Mockito.spy(Article.class);
Mockito.doReturn(item).when(article).prepareItem();
article.calculate();