Mockito в режиме отладки с точкой останова приводит к WrongTypeOfReturnValue - PullRequest
0 голосов
/ 06 ноября 2018

Вот этот простой фрагмент.

@Component
public class SomeDependency {
    public Optional<Integer> getSomeInt(String string) {
        return Optional.of(1);
    }
}

@Component
public class SomeService {

    @Autowired
    private SomeDependency someDependency;

    public String someMethod(String string) {
        return String.valueOf(someDependency.getSomeInt(string).get());
    }
}

@RunWith(MockitoJUnitRunner.class)
public class SomeServiceTest {

    @Mock
    private SomeDependency someDependency;

    @InjectMocks
    private SomeService someService;

    @Test
    public void test() {
        when(someDependency.getSomeInt(anyString()))
                .thenReturn(Optional.of(111));

        String value = someService.someMethod("test");

        assertThat(value, is("111"));
    }
}

Теперь, когда я запускаю тест, все идет хорошо, но когда я запускаю его в режиме отладки, когда на нем установлена ​​точка останова, когда ... thenReturn ... mock и используется step over, выдается следующая ошибка.

org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
        Optional cannot be returned by toString()
        toString() should return String
        ***
        If you're unsure why you're getting above error read on.
        Due to the nature of the syntax above problem might occur because:
        1. This exception *might* occur in wrongly written multi-threaded tests.
        Please refer to Mockito FAQ on limitations of concurrency testing.
        2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
        - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

Но, если я использую следующий oneliner вместо twoliner, все в порядке. Ошибка не возвращается.

when(someDependency.getSomeInt(anyString())).thenReturn(Optional.of(111));

Так в чем же проблема?

1 Ответ

0 голосов
/ 05 июня 2019

Используете ли вы идею для отладки? Отладчик идеи может нарушить процесс создания заглушек.

Перейти к Предпочтения -> Построение, Выполнение, Развертывание -> Отладчик -> Представления данных -> Java , отмена Включить представление объекта 'toString ()' Флажок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...