Макет интерфейса с Mockito, так что Джексон может его сериализовать - PullRequest
0 голосов
/ 01 ноября 2019

Имею простой интерфейс типа

interface Foo {
  string getBar();
}

Я хочу смоделировать его как

    final Foo foo = Mockito.mock(
      Foo.class,
      withSettings()
        .serializable(SerializableMode.ACROSS_CLASSLOADERS)
        .withoutAnnotations()
        .stubOnly()
    );

, а затем иметь возможность сериализовать его с Джексоном.

При выполненииИтак, Джексон выдает исключение

org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.mockito.internal.junit.DefaultStubbingLookupListener]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.mockito.internal.junit.DefaultStubbingLookupListener and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.exampleuser.model.domain.Foo$MockitoMock$479459786["mockitoInterceptor"]->org.mockito.internal.creation.bytebuddy.MockMethodInterceptor["mockHandler"]->org.mockito.internal.handler.InvocationNotifierHandler["mockSettings"]->org.mockito.internal.creation.settings.CreationSettings["stubbingLookupListeners"]->java.util.concurrent.CopyOnWriteArrayList[0])
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:293) ~[spring-web-5.1.10.RELEASE.jar:5.1.10.RELEASE]

Если вам интересно, сериализация происходит в контроллере REST Spring MVC, я возвращаю этот интерфейс в шпион

    doReturn(Optional.ofNullable(foo)).when(userService).getOne(anyLong(), any());

Так что он возвращается вконтроллер как ResponseEntity.ok(foo)

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