/** @test */ public function shouldProvideCorrectBasisValue() { $insertIntoArray = function ($arr, $val, $i) { $arr[$i] = $val; return $arr; }; $d1 = new Deferred(); $d2 = new Deferred(); $d3 = new Deferred(); $mock = $this->createCallableMock(); $mock->expects($this->once())->method('__invoke')->with($this->identicalTo(array(1, 2, 3))); When::reduce(array($d1->promise(), $d2->promise(), $d3->promise()), $insertIntoArray, array())->then($mock); $d3->resolve(3); $d1->resolve(1); $d2->resolve(2); }