TestMockSubServices.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  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. if(isset($serviceDefinition['methods']))
  10. foreach ($serviceDefinition['methods'] as $mName=>$mVal){
  11. $mockingService->method($mName)->willReturn($mVal);
  12. }
  13. if(isset($serviceDefinition['subServices']))
  14. foreach ($serviceDefinition['subServices'] as $subService){
  15. $mockingService->instant(
  16. $subService['serviceName'],
  17. ($subServiceMock=function()use($subService){
  18. $subServiceMock=$this->createPartialMock(
  19. $subService['class'],
  20. array_keys($subService['methods'])
  21. );
  22. if(isset($subService['methods']))
  23. foreach ($subService['methods'] as $methodName=>$methodVal){
  24. $subServiceMock->method($methodName)->willReturn($methodVal);
  25. }
  26. return $subServiceMock;
  27. })()
  28. );
  29. }
  30. return $mockingService;
  31. }
  32. }