How to test Grails service using Spock?

后端 未结 2 2008
无人共我
无人共我 2021-02-14 11:39

I have a EncouragementService.groovy with following method

  class EncouragementService {
   def stripePaymentService 

   def encourageUsers(List&l         


        
2条回答
  •  时光取名叫无心
    2021-02-14 12:00

    Service class can be optimized as below:

    class EncouragementService {
       def encourageUsers(List users){
           if(users){ //Groovy truth takes care of all the checks
              for(user in users){
                //logic
              }
           }   
       }
    }
    

    Spock Unit Test:
    Spock takes testing to whole another level, where you can test the behavior (adheres to BDD). The test class would look like:

    import spock.lang.*
    
    @TestFor(EncouragementService)
    @Mock(User) //If you are accessing User domain object.
    class EncouragementServiceSpec extends Specification{
      //def encouragementService //DO NOT NEED: mocked in @TestFor annotation
    
      void "test Encourage Users are properly handled"() {
          given: "List of Users"
              List users = createUsers()
    
          when: "service is called"
              //"service" represents the grails service you are testing for
              service.encourageUsers(users) 
    
          then: "Expect something to happen"
              //Assertion goes here
      }
    
      private def createUsers(){
           return users //List
      }
    }
    

提交回复
热议问题