Как проверить атрибуты объекта, переданного в качестве параметра сервису, поэкспериментированному с Mockito - PullRequest
1 голос
/ 11 апреля 2020

Я новичок в Mockito и не могу протестировать этот сценарий:

Я хочу протестировать контроллер ws, который принимает строку json, анализирует ее и вызывает метод из службы с приведенный объект. Я решил смоделировать служебную зависимость с помощью Mockito, и я пытаюсь убедиться, что правильный метод из этого макета вызывается с правильным параметром.

Мне кажется, проблема в том, что метод verify сравнивает ссылки двух объектов. Есть ли способ сравнить определенные атрибуты объекта, переданного в качестве параметра? Есть ли другое решение, кроме переопределения метода equals для "DummyObj" из примера?

* краткое резюме: метод controller.recive (json) принимает строку и вызывает service.onMessage (resultObj) с проанализированным obj в качестве параметра. метод onMessage ничего не возвращает. *

Тест выглядит так:

@Test
public void test() {
    DummyObj dummyObj = new DummyObj();
    String dummyObjJson = new Gson().toJson(dummyObj);

    controller.recive(dummyObjJson);

    verify(mockedService).onMessage(dummyObj);
}

1 Ответ

0 голосов
/ 11 апреля 2020

Один способ использует ArgumentMatchers.argThat

verify(mockedService)
  .onMessage(ArgumentMatchers.argThat(obj->obj.getName().equals(dummyObj.getName())));

А другой способ использует ArgumentCaptor

 ArgumentCaptor<DummyObj> argument = ArgumentCaptor.forClass(DummyObj.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...