Здесь:
final EmailageConfigHolder holder = new EmailageConfigHolder();
Mockito не может вводить макеты в локальную переменную.В документации действительно об этом ясно сказано:
Mockito будет пытаться внедрять макеты только с помощью инжекции конструктора, инжектора сеттера или свойства, как описано ниже.
По сути, используя new()
в теле вашего метода, вы написали сложный для тестирования код.Потому что с Mockito у вас есть ноль опций для управления тем, что new()
вернет в теле этого метода.
Пути из этого:
- делает это "holder "поле вашего класса, затем введите его с помощью этой аннотации или с помощью конструктора, принимающего экземпляр владельца
- , передайте экземпляр в качестве параметра методу
или при условии, что вы можетефактически создайте новый объект Holder в производственном коде в вашей настройке модульного теста, и, поскольку вы возвращаете этот объект, просто утверждаете в свойствах возвращаемого объекта.С этой точки зрения вам вообще не нужно использовать насмешки.Просто убедитесь, что объект, возвращаемый после этого вызова, имеет ожидаемые свойства!
Или (не рекомендуется) вы можете обратиться к PowerMock (ito) или JMockit, чтобы получить контроль над этим вызовом new()
,Но, как сказано: лучше переделать свой код, чтобы его можно было легко тестировать .
Кстати: реальный ответ в том, что вы отступаете назад и читаете хороший учебник о Mockito.Вы не можете научиться использовать такие рамки методом проб и ошибок.Узнайте, как это сделать правильно, с помощью хороших небольших примеров, а затем, когда вы поймете, как соединить точки, примените это к своему собственному коду!