En la testing unitaria Spock, el método burlado no se está llamando

Estoy tratando de implementar la testing unitaria usando Spock framework, esta es la apariencia de mi testing:

def setup() { scrollableResultsMock = Mock(ScrollableResults) paymentRepositoryMock = Mock(PaymentRepository) paymentRegistryService = new PaymentRegistryService(paymentRepositoryMock) } @Unroll def 'should correctly process'() { given: paymentRepositoryMock.findUnconfirmedTransactions(_ as LocalDate, _ as Days) >> scrollableResultsMock ... } 

Aquí hay una class en la que bash inyectar un object burlado:

 @Service open class PaymentRegistryService @Autowinetworking constructor( val paymentRepository: PaymentRepository ) { @Transactional open fun parseRegistryFileStream(input: InputStream): LinkedList<Pair<Long, String>> { ... val registry = paymentRepository.findUnconfirmedTransactions(start, PERIOD) ... } } 

Mientras paymentRepository testing en lugar de llamar a mi método, se está llamando al método real paymentRepository . No entiendo cuál podría ser el motivo. LocalDate y Days son de la hora Joda y finalmente esta es la class paymentRepository :

 @Repository @Transactional open class PaymentRepository : AbstractRepository<Payment, Long>(Payment::class.java) { fun findUnconfirmedTransactions(start: LocalDate, days: Days): ScrollableResults = criteria().add( and( eq("isConfirmed", false), ge("transactionDateTime", start), lt("transactionDateTime", start.plus(days)) )).setCacheMode(CacheMode.IGNORE).scroll(ScrollMode.FORWARD_ONLY) } 

Por favor intente esto:

 open fun findUnconfirmedTransactions(start: LocalDate, days: Days): ScrollableResults 

La burla necesita extender la function y Spock no podrá hacerlo a less que la function esté abierta en Kotlin.