Ho un EncouragementService.groovy
con seguente metodoCome testare il servizio Grails usando Spock?
class EncouragementService {
def stripePaymentService
def encourageUsers(List<User> users){
if(null != users && users.size()>0){
for(User user : users){
//logic
stripePaymentService.encourage(user)
//
}
}
}
}
Per provare sopra il codice in JAVA universo, usando JUnit desidero innanzitutto creare due o tre utenti nella configurazione. Passa l'elenco degli utenti al metodo encourageUsers(...)
e verifica quello che voglio con il risultato.
Come posso ottenere la stessa cosa qui a graal,
import com.github.jmkgreen.morphia.Datastore;
@TestFor(EncouragementService)
class EncouragementServiceSpec {
def morphiaService = new MorphiaService()
void testEncourageUsers() {
List<User> users = createUsers();
encouragementService.(users)
//
}
def createUsers(){
Datastore datastore = morphiaService.dataStoreInstance()
def user = new User()
user.setName("Prayag Upd")
//
datastore.save(user)
[user]
}
}
Sto usando spock:0.7
plugins {
test(":spock:0.7") { exclude "spock-grails-support" }
}
"Patience" è [il mio nome] (http://www.ask.com/question/what-is-the-meaning-of-the-name-dhiraj), non sto scherzando;). Francamente parlando, recentemente ho avuto una [presentazione] (http://dmahapatro.github.io/bdd-grails-spock-presentation/#/) su spock nel gruppo locale Grails User, quindi ho pensato che mi sarei vantato di qualcosa che ho lavorato sopra. ;) @ SérgioMichels – dmahapatro
@dmahapatro Quando 'User' non è un'entità basata su' grails-app/domain', ottengo 'Failure: test Gli utenti sono gestiti correttamente (np.zazzercode.service.EncouragementServiceSpec) | org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: impossibile aggiungere la classe Domain [class np.zazzercode.domain.User]. Non è un dominio! \t a grails.test.mixin.domain.DomainClassUnitTestMixin.registerGrailsDomainClass (DomainClassUnitTestMixin.groovy: 209) ' – prayagupd
@PrayagUpd Sì, se l'utente non è una classe di dominio, allora non sarebbe necessario' @ Mock' questo è quello che volevo dire nella risposta. – dmahapatro