Здесь:
stub(arrayListMock.size()).toReturn(5);
Вы вызываете метод, который ожидает аргумент int.Но вы не объявляли и не импортировали такой метод.Компилятор понятия не имеет, что вы пытаетесь сделать.
Правильный путь будет:
when(arrayListMock.size()).thenReturn(5);
(после импорта when()
из Mockito).
Важная вещь, которую нужно понять: нет особой разницы между «издевательством» и «заглушением» в Mockito.Вы просто используете when(mock.someMethod())
, чтобы запустить спецификацию насмешки.В Mockito нет метода stub()
!
Тогда: обратите внимание, что существует разница между spy и mock в Mockito.Макет - это полностью «виртуальный» объект, который не имеет никакого отношения к реальному коду.Шпион - это скорее обертка, которую Mockito «помещает» в реальный объект вашего класса для тестирования.Ваш тест называется SpyTest
, но с помощью шпиона не .Если бы он использовал шпиона, все было бы иначе.
Конечно, настоящий реальный ответ: вы никогда не издеваетесь над списками.Вы просто создаете реальный список и заполняете его элементами, которые вам нужны.Может быть, объекты, которые вы помещаете в список, являются ложными, но есть необходимость ноль , чтобы смоделировать списки самостоятельно
Наоборот: это плохо практика.Вы пытаетесь свести к минимуму количество использованных издевательств.