Ciao ho un controller chiamato ApiController che utilizza un servizio chiamato ApiService in questo modo:Grails Spock test Controller e il servizio
def createCategory(){
def jsonObj = request.JSON
jsonObj.each{ key, value ->
params.put(key,value)
}
render apiService.createCategory(params)
}
che funziona bene. Ma non riesco a scrivere un test per questo.
Questo è quanto ho ottenuto:
@TestFor(ApiController)
@Mock([Category,ApiService])
class CategorySpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test"() {
setup:
def apiService = Mock(ApiService)
when:
request.method = 'POST'
request.requestMethod = 'POST'
params.categoryID = 'test'
controller.createCategory()
then:
println(response)
1==1
}
Da questo ottengo il seguente errore:
java.lang.NullPointerException: Cannot invoke method createCategory() on null object
Questo è, ovviamente, perché non può vedere il mio fagiolo apiService. Quindi la mia domanda è: come faccio a farlo in Spock?
come è il controller che connetterizza createCategory() sembra ... o fornisce una struttura dettagliata di quel controllo. –