Я новичок в Mockito, и у меня возникла проблема из-за того, что свойство не загружается из файла appication.propertie
s.
Постановка проблемы: я пытаюсь смоделировать метод, который использует свойство из файла application.properties. Когда элемент управления достигает строки для загрузки значения свойства, он показывает null, и из-за этого mockito выдает java.lang.NullPointerException
.
Я ищу, как загрузить свойство из файла application.properties при насмешке над методом. Здесь я пытаюсь загрузить глобальную переменную partsListGlobal
. Пожалуйста, помогите мне, как это сделать.?
Вот мой фрагмент кода ниже.
@Service
public class ClimoDiagnosticReportServImpl implements ClimoDiagnosticReportService {
@Value("${PARTS_LIST}")
private String partsListGlobal;
@Override
public boolean getSomeResult() {
String[] partsListLocal = getPartsList();
List<String> partsList = Arrays.asList(partsListGlobal);
if (partsList.contains("PART_X1"))
return true;
else
return false;
}
public String[] getPartsList() {
return partsListGlobal.split(",");// Here is the error occuring due to partsListGlobal is not loading the value from application.properties file.
}
}
@RunWith(MockitoJUnitRunner.class)
public class ClimoDiagnosticReportServImplTest {
@InjectMocks
private ClimoDiagnosticReportServImpl serviceReference1;
@Mock
private ClimoDiagnosticReportServImpl serviceReference12;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void getSomeResultTest() {
boolean result1 = false;
String[] strArray = new String[2];
strArray[0] = "P1";
strArray[1] = "P2";
Mockito.when(serviceReference12.getPartsList()).thenReturn(strArray);
boolean result2 = serviceReference1.getSomeResult();
Assert.assertEquals(result1,result2);
}
}
Ошибка:
Спасибо всем заранее.
У вас нет никакой зависимости от mock в сервисе. Таким образом, Mockito совершенно не нужен. Что вам нужно сделать, так это установить поле private String, которое заполняется Spring в вашем приложении с использованием отражения.