TestMockSubServices.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Traits;
  3. trait TestMockSubServices{
  4. function subMock(array $serviceDefinition){
  5. $mockingService=$this->createPartialMock(
  6. $serviceDefinition['class'],
  7. isset($serviceDefinition['methods'])
  8. ?array_keys($serviceDefinition['methods']):[]
  9. );
  10. if(isset($serviceDefinition['methods']))
  11. foreach ($serviceDefinition['methods'] as $mName=>$mVal){
  12. $mockingService->method($mName)->willReturn($mVal);
  13. }
  14. if(isset($serviceDefinition['subServices']))
  15. foreach ($serviceDefinition['subServices'] as $subService){
  16. $mockingService->instant(
  17. $subService['serviceName'],
  18. ($subServiceMock=function()use($subService){
  19. $subServiceMock=$this->createPartialMock(
  20. $subService['class'],
  21. array_keys($subService['methods'])
  22. );
  23. if(isset($subService['methods']))
  24. foreach ($subService['methods'] as $methodName=>$methodVal){
  25. $subServiceMock->method($methodName)->willReturn($methodVal);
  26. }
  27. return $subServiceMock;
  28. })()
  29. );
  30. }
  31. return $mockingService;
  32. }
  33. function getTargetIdCirculately($targetArr, $additionMark='', $idName='id'){
  34. $amount = count($targetArr);
  35. $json_encode = json_encode($targetArr);
  36. $iName = 'i_' . md5($json_encode . $additionMark);
  37. if(!isset($this->data[$iName])){
  38. $this->data[$iName]=$amount;
  39. }
  40. $this->data[$iName]++;
  41. if($this->data[$iName]>=$this->batchAmount)
  42. $this->data[$iName]=0;
  43. return $targetArr[$this->data[$iName]][$idName];
  44. }
  45. function getIntegerIncreasely($markStr): int
  46. {
  47. $iName = 'i_' . $markStr;
  48. if(!isset($this->data[$iName])){
  49. $this->data[$iName]=-1;
  50. }
  51. $this->data[$iName]++;
  52. return $this->data[$iName];
  53. }
  54. function makeArray($amount,$array)
  55. {
  56. $resultArrays=[];
  57. for($i=0;$i<$amount;$i++){
  58. $newArr=[];
  59. foreach ($array as $key=>$item){
  60. if(gettype($item)=='object'){
  61. $newArr[$key]=$item();
  62. }else{
  63. $newArr[$key]=$item;
  64. }
  65. }
  66. $resultArrays[]= $newArr;
  67. }
  68. return $resultArrays;
  69. }
  70. }