在 spock 中模拟对同一方法的多次调用

Mock multiple calls to the same method in spock

我目前正在为 groovy 应用程序编写单元测试用例

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

测试class

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

谁能告诉我这是否是在 spock 中模拟这两个调用的正确方法?如果否,请指导我找到正确的解决方案。

要return 连续调用的不同值,请使用三重右移 (>>>) 运算符:

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

然后getDateBasedOnValue()第一次return"some date string 1",第二次"some date string 2"