I am trying to run the Grails 3 service integration test using spock where the block is located. However, I get a null pointer exception (see below). If I run it as a sequence, then he / she is blocked. Any idea what I am missing?
@Integration @Rollback class PersistenceAutoCompleteTermServiceIntegrationSpec extends Specification { def setup() { } def cleanup() { } @Autowired PersistenceAutoCompleteTermService persistenceAutoCompleteTermService @Unroll void "fetchAllLikeTerm tests"() { setup: new PersistenceAutoCompleteTerm(name: 'Milkshake').save() new PersistenceAutoCompleteTerm(name: 'Oat Milk').save() new PersistenceAutoCompleteTerm(name: 'Special K').save() when: List<String> names = persistenceAutoCompleteTermService.fetchAllLikeTerm(term) then: names.size() == expected_result where: term | expected_result "Milk" | 2 "milk" | 2 } }
Crash with
java.lang.NullPointerException at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) at grails.transaction.GrailsTransactionTemplate.executeAndRollback(GrailsTransactionTemplate.groovy:64) at com.shoptimix.api.persistence.PersistenceAutoCompleteTermServiceIntegrationSpec.fetchAllLikeTerm tests(PersistenceAutoCompleteTermServiceIntegrationSpec.groovy)
However, this works:
@Unroll void "fetchAllLikeTerm tests"() { setup: new PersistenceAutoCompleteTerm(name: 'Milkshake').save() new PersistenceAutoCompleteTerm(name: 'Oat Milk').save() new PersistenceAutoCompleteTerm(name: 'Special K').save() when: List<String> names = persistenceAutoCompleteTermService.fetchAllLikeTerm("Milk") then: names.size() == 2 when: names = persistenceAutoCompleteTermService.fetchAllLikeTerm("milk") then: names.size() == 2 }
source share