Add @InjectSpy.delegate
to evade errors with default
methods in intermediate spring-data repo interfaces
#26900
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Evades:
It can also help with other cases, see https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#delegating_call_to_real_instance
For this specific case of spring repos, I can't help but think that there might be another solution on class generation level, but I'm lacking the time to dig deeper.
If I create a dummy impl of a repo class, trying to mimic what's happening in ArC, then mockito has no issue with calling a
default
method in an intermediate interface of that repo. So something might be incompatible here (between mockito/bytebuddy and quarkus/arc)...I can provide that small playground project if required.
I hope the test class I added is sufficient to play around with. The crucial thing is that
PostRepository
implements https://github.com/quarkusio/quarkus/blob/main/integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/IntermediateRepository.javaI can't prove it, but I guess that issue could surface for other, non-spring-repo beans as well.