mam EncouragementService.groovy
z następującą metodęJak przetestować usługę Grails za pomocą Spocka?
class EncouragementService {
def stripePaymentService
def encourageUsers(List<User> users){
if(null != users && users.size()>0){
for(User user : users){
//logic
stripePaymentService.encourage(user)
//
}
}
}
}
Aby przetestować powyżej kodu w uniwersum JAVA, używając JUnit Chciałbym najpierw utworzyć dwie lub trzy użytkowników w konfiguracji. Przekaż listę użytkowników do metody encourageUsers(...)
i sprawdź, co chcę z wynikiem.
jaki sposób można osiągnąć to samo tutaj w Grails,
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]
}
}
Używam spock:0.7
plugins {
test(":spock:0.7") { exclude "spock-grails-support" }
}
"Cierpliwość" to [moje imię] (http://www.ask.com/question/what-is-the-meing-of-the-name-dhiraj), nie żartuję;). Szczerze mówiąc, ostatnio miałem [prezentacja] (http://dmahapatro.github.io/bdd-grails-spock-presentation/#/) na spocku w lokalnej grupie Grails User, więc pomyślałem, że będę się chwalić czymś, co pracowałem na. ;) @ SérgioMichels – dmahapatro
@dmahapatro Kiedy 'User' nie jest jednostką opartą na' grails-app/domain', otrzymuję 'Failure: test Użytkownicy są poprawnie obsługiwani (np.zazzercode.service.EncouragementServiceSpec) | org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Nie można dodać klasy Domain [class np.zazzercode.domain.User]. To nie jest domena! \t na grails.test.mixin.domain.DomainClassUnitTestMixin.registerGrailsDomainClass (DomainClassUnitTestMixin.groovy: 209) ' – prayagupd
@PrayagUpd Tak, jeśli użytkownik nie jest klasa domeny, wtedy nie trzeba' @ Mock' to, co mam na myśli w odpowiedzi. – dmahapatro