PHPUnit Различные возвращаемые значения каждый вызов издевающегося метода

Например, у меня есть насмешливый класс, как показано ниже:

$mock= $this->getMockBuilder("SomeClass")->disableOriginalConstructor()->getMock();

$mock->expects($this->any())
     ->method("someMethod")
     ->will($this->returnValue("RETURN VALUE"));

Единственным параметром someMethod является массив $arr.

То, что я хочу сделать, - это вернуть $arr[0], когда someMethod вызывается в первый раз, $arr[1] второй раз и т.д.

Размер $arr является динамическим.

Любая идея, как достичь этого, если это возможно?

Ответ 1

$mock->expects($this->any())
    ->method("someMethod")
    ->will($this->onConsecutiveCalls(1, 2, 3));

С onConsecutiveCalls вы можете установить возвращаемое значение для каждого вызова someMethod. Первый вызов возвращает 1. Второй вызов 2. Третий вызов 3.