Как передать два разных типа параметров в mockito - PullRequest
0 голосов
/ 25 февраля 2020

Я делаю действительно простую вещь, но сталкиваюсь с какой-то проблемой. Так что написал один действительно простой метод, который берет один JsonObject и на основе ключа извлекает JsonArry. Работает нормально, но когда я пытаюсь написать юнит-тест, то сталкиваюсь с проблемой. Таким образом, следующий метод, который необходимо проверить.

public String getA(JSONObject jsonObject) {
    JSONArray educationsArray = jsonService.getJsonArray(jsonObject, "a");
}

public String getB(JSONObject jsonObject) {
    JSONArray educationsArray = jsonService.getJsonArray(jsonObject, "b");
}

вот модульный тест, который я пытаюсь написать.

String json = fileUtil.readFile("data.json");
String content = (String) new JSONObject(json).get("data");
JSONObject contentJson = new JSONObject(content);
when(jsonLinkExtractorService.getJsonArray(contentJson, "a")).thenReturn(jsonArray);

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

не при фактическом вызове метода, тогда он возвращает ноль. Вероятно, причина в том, что объект JsonObject отличается для Mockito, поэтому не может соответствовать. Когда я изменил эти два параметра на any (), any (), то он работает find, но затем он не фильтруется по ключу. Так может кто-нибудь помочь мне, или как-то Mockito может сопоставить два вновь созданных объекта, или я могу издеваться, как в следующем утверждении.

any(), "a"

Я пытался, но выдает исключение. Может ли кто-нибудь помочь мне в этом.

Спасибо

1 Ответ

0 голосов
/ 27 февраля 2020

Если вы используете ArgumentMatchers для одного из параметров, вы должны использовать его для всех из них. В этом случае используйте ArgumentMatchers.eq("a") вместо "a":

when(jsonLinkExtractorService.getJsonArray(any(), eq("a"))).thenReturn(jsonArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...