public function testGlobalErrorHandler() { $this->client->expects($this->once())->method('call')->with('system.multicall', array(array(array('methodName' => 'method1', 'params' => array('arg11', 'arg12')), array('methodName' => 'method2', 'params' => array('arg21', 'arg22')))))->will($this->returnValue(array('return1', array('faultCode' => 200)))); $individualSuccessHandlerResults = array(); $individualSuccessHandler = function ($result) use(&$individualSuccessHandlerResults) { $individualSuccessHandlerResults[] = $result; }; $globalSuccessHandlerResults = array(); $globalSuccessHandler = function ($result) use(&$globalSuccessHandlerResults) { $globalSuccessHandlerResults[] = $result; }; $globalErrorHandlerResults = array(); $globalErrorHandler = function ($result) use(&$globalErrorHandlerResults) { $globalErrorHandlerResults[] = $result; }; $results = $this->multicall->addCall('method1', array('arg11', 'arg12'), $individualSuccessHandler)->addCall('method2', array('arg21', 'arg22'), $individualSuccessHandler)->onSuccess($globalSuccessHandler)->onError($globalErrorHandler)->execute(); $this->assertSame(array('return1', array('faultCode' => 200)), $results); $this->assertSame($results, $individualSuccessHandlerResults); $this->assertSame(array('return1'), $globalSuccessHandlerResults); $this->assertSame(array(array('faultCode' => 200)), $globalErrorHandlerResults); }