Имею простой интерфейс типа
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)