Ich habe ein EncouragementService.groovy
mit Verfahren folgendenWie Grails Service mit Spock testen?
class EncouragementService {
def stripePaymentService
def encourageUsers(List<User> users){
if(null != users && users.size()>0){
for(User user : users){
//logic
stripePaymentService.encourage(user)
//
}
}
}
}
obigen Code in JAVA Universum zu testen, mit JUnit Ich würde zwei oder drei Benutzer in Setup zuerst erstellen. Übergeben Sie die Liste der Benutzer an encourageUsers(...)
Methode und überprüfen Sie, was ich will mit dem Ergebnis.
Wie kann ich die gleiche Sache hier in Grails erreichen,
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]
}
}
Ich bin mit spock:0.7
plugins {
test(":spock:0.7") { exclude "spock-grails-support" }
}
"Patience" ist [mein Name] (http://www.ask.com/question/what-is-the-meaning-of-the-name-dhiraj), ich mache keine Witze;). Ehrlich gesagt, ich hatte kürzlich eine [Präsentation] (http://dmahapatro.github.io/bdd-grails-spock-presentation/#/) auf Spock in der lokalen Grails-Benutzergruppe, also dachte ich, ich würde mit etwas prahlen, was ich gearbeitet habe auf. ;) @ SérgioMichels – dmahapatro
@dmahapatro Wenn 'User' keine' grails-app/domain' basierte Entität ist, bekomme ich 'Failure: test Benutzer werden richtig behandelt (np.zazzercode.service.EncouragementServiceSpec) | org.codehouse.groovy.grails.exceptions.GrailsConfigurationException: Domain-Klasse [Klasse np.zazzercode.domain.User] kann nicht hinzugefügt werden. Es ist keine Domain! \t bei grails.test.mixin.domain.DomainClassUnitTestMixin.registerGrailsDomainClass: gemeint (DomainClassUnitTestMixin.groovy 209) ' – prayagupd
@PrayagUpd Ja, wenn Benutzer nicht ein Domäne-Klasse ist, dann müssen Sie nicht' @ Mock' das, was ich ist in der Antwort. – dmahapatro