Как выполнить модульное тестирование метода Stream.reduce - PullRequest
0 голосов
/ 21 октября 2019

Мне нужно провести юнит-тест reduce() метод. Не уверен, почему он выбрасывает NullPointerException, хотя я вижу, что объект не равен нулю.

Пожалуйста, обратитесь к приведенному ниже коду.

  Mock:-
  when(mergeUtility.mergeJson(josnObj1, jsonObj2)).thenReturn( new
  JsonParser().parse(MergeConstant.mergedJsonObject).getAsJsonObject());

Фактический метод:

Optional<JsonObject> aggregatedJson = 
     jsonList.stream().reduce(mergeUtility :: mergeJson);

Когда я проверяю jsonList имеет к объектам, все еще NullPointerException бросается из метода reduce(). Может кто-нибудь, пожалуйста, дайте мне знать причину?

1 Ответ

3 голосов
/ 22 октября 2019

Попробуйте код ниже: -

 when(mergeUtility.mergeJson(Mockito.any(), Mockito.any())).thenReturn( new
  JsonParser().parse(MergeConstant.mergedJsonObject).getAsJsonObject());

Причина этого в том, что вы издеваетесь над методом, но отправляете параметры как josnObj1, jsonObj2, которые отличаются от объектов, сгенерированных jsonList при выполненииваш тестовый пример, поэтому, когда вы выполняете операцию равенства для элементов, сгенерированных списком, и josnObj1, jsonObj2 они не будут совпадать. Поскольку объекты не совпадают, вызов метода не совпадает с тем, который вы смоделировали, поэтомуне выполняется.

Принимая во внимание, что при использовании Mockito.any() он будет высмеивать метод независимо от параметра, который передается методу, даже если они не совпадают.

...