TestMockSubServices.php 1.1 KB

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