createPartialMock( $serviceDefinition['class'], isset($serviceDefinition['methods']) ?array_keys($serviceDefinition['methods']):[] ); if(isset($serviceDefinition['methods'])) foreach ($serviceDefinition['methods'] as $mName=>$mVal){ $mockingService->method($mName)->willReturn($mVal); } if(isset($serviceDefinition['subServices'])) foreach ($serviceDefinition['subServices'] as $subService){ $mockingService->instant( $subService['serviceName'], ($subServiceMock=function()use($subService){ $subServiceMock=$this->createPartialMock( $subService['class'], array_keys($subService['methods']) ); if(isset($subService['methods'])) foreach ($subService['methods'] as $methodName=>$methodVal){ $subServiceMock->method($methodName)->willReturn($methodVal); } return $subServiceMock; })() ); } return $mockingService; } function getTargetIdCirculately($targetArr, $additionMark='', $idName='id'){ $amount = count($this->data['batches']); $iName = 'i_' . md5(json_encode($targetArr) . $additionMark); if(!isset($this->data[$iName])){ $this->data['$iName']=$amount; } $this->data['$iName']++; if($this->data['$iName']>=$this->batchAmount) $this->data['$iName']=0; return $targetArr[$this->data['$iName']][$idName]; } function getIntegerIncreasely($markStr): int { $iName = 'i_' . $markStr; if(!isset($this->data[$iName])){ $this->data[$iName]=-1; } $this->data[$iName]++; return $this->data[$iName]; } }