Ссылка от ответ на аналогичный вопрос ,
Начиная с PHPUnit 4.1 вы можете использовать withConsecutive
например.
$mock->expects($this->exactly(2))
->method('set')
->withConsecutive(
[$this->equalTo('foo'), $this->greaterThan(0)],
[$this->equalTo('bar'), $this->greaterThan(0)]
);
Если вы хотите вернуть его при последующих вызовах:
$mock->method('set')
->withConsecutive([$argA1, $argA2], [$argB1], [$argC1, $argC2])
->willReturnOnConsecutiveCalls($retValueA, $retValueB, $retValueC);
Не идеально использовать at()
, если вы можете избежать этого, потому что как утверждают их документы
Параметр $ index для сопоставителя at () относится к индексу, начиная с нуля, во всех вызовах методов для данного фиктивного объекта. Будьте осторожны при использовании этого сопоставителя, так как это может привести к хрупким испытаниям, которые слишком тесно связаны с конкретными деталями реализации.