TestMockSubServices.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace App\Traits;
  3. trait TestMockSubServices{
  4. function subMock(array $serviceDefinition){
  5. $mockingService=$this->createPartialMock(
  6. $serviceDefinition['class'],
  7. array_keys($serviceDefinition['methods'])
  8. );
  9. foreach ($serviceDefinition['methods'] as $mName=>$mVal){
  10. $mockingService->method($mName)->willReturn($mVal);
  11. }
  12. if(isset($serviceDefinition['subServices']))
  13. foreach ($serviceDefinition['subServices'] as $subService){
  14. $mockingService->instant(
  15. $subService['serviceName'],
  16. ($subServiceMock=function()use($subService){
  17. $subServiceMock=$this->createPartialMock(
  18. $subService['class'],
  19. array_keys($subService['methods'])
  20. );
  21. if(isset($subService['methods']))
  22. foreach ($subService['methods'] as $methodName=>$methodVal){
  23. $subServiceMock->method($methodName)->willReturn($methodVal);
  24. }
  25. return $subServiceMock;
  26. })()
  27. );
  28. }
  29. return $mockingService;
  30. }
  31. }