13

I am currently writing unit testcase for a groovy application

class StorePage{
   ..
   ..
   str1 = obj.getDateBasedOnValue("A");
   str2 = obj.getDateBasedOnValue("B");
}

Test class

classStorePageSpec extends Specification{
   Obj obj = Mock(Obj)
   ...
   def "testCase 1"(){
      obj.getDateBasedOnValue(_) >> "some date string 1"
      obj.getDateBasedOnValue(_) >> "some date string 2"
   }
}

Can someone tell me if this is the right way to mock both the calls in spock? If no then please guide me towards the right solution.

Supersic
  • 232
  • 2
  • 13

1 Answers1

20

To return different values on successive invocations, use the triple-right-shift (>>>) operator:

def "testCase 1"(){
    obj.getDateBasedOnValue(_) >>> ["some date string 1", "some date string 2"]
}

Then getDateBasedOnValue() will return "some date string 1" for the first time and "some date string 2" for the second time.

cgrim
  • 4,890
  • 1
  • 23
  • 42