Как можно аннотировать класс (или подсмотреть) в Споке, чтобы можно было утверждать логику, основанную на аннотации?
Придуманный пример в Groovy (может быть и на Java) показывает метод, который проверяет конкретное значение аннотации в коллекции объектов. Представьте себе более сложную логику, выполняемую после фильтрации по аннотации, которую я хотел бы утверждать с помощью насмешливых объектов в коллекции.
@FooAnnotation('FOOBAR')
class MainGroovy {
def findFOOBARs(Object... candidates) {
candidates.findAll{ it.class.getAnnotation(FooAnnotation)?.value() == 'FOOBAR' }
//Do something with the filtered objects.
}
}
Передача шпиона не проходит фильтр аннотаций, поэтому ни о какой последующей логике нельзя утверждать.
@Unroll
def test() {
given:
def foobars = mg.findFOOBARs(mg, new Object(), 'STRING')
expect:
foobars.size() == 1
where:
mg << [new MainGroovy(), Spy(MainGroovy)]
}