@@ -15,7 +15,7 @@ trait ServiceMockHelperTrait
1515 /**
1616 * @param class-string<object> $class
1717 *
18- * @return array{0: MockObject, 1: class-string}
18+ * @return array{0: MockObject|mixed , 1: class-string|false }
1919 */
2020 private function __createMockedServiceParameter (
2121 string $ class ,
@@ -48,27 +48,26 @@ private function __createMockedServiceParameter(
4848 $ type = $ type ->getTypes ()[0 ];
4949 }
5050
51+ $ defaultValue = false ;
52+
5153 if ($ type ->isBuiltin ()) {
52- throw new \LogicException (
53- sprintf (
54- 'Specify parameter $%s in %s::%s ' ,
55- $ parameter ->getName (),
56- $ class ,
57- $ method ->getName ()
58- )
59- );
60- }
54+ if (!$ parameter ->isDefaultValueAvailable ()) {
55+ throw new \LogicException (
56+ sprintf (
57+ 'Specify parameter $%s in %s::%s ' ,
58+ $ parameter ->getName (),
59+ $ class ,
60+ $ method ->getName ()
61+ )
62+ );
63+ }
6164
62- /**
63- * @var class-string<object> $final
64- *
65- * @noinspection PhpRedundantVariableDocTypeInspection
66- */
67- $ final = $ type ->getName ();
65+ $ defaultValue = $ parameter ->isDefaultValueAvailable ();
66+ }
6867
6968 return [
70- $ this ->createMock ($ final ),
71- $ type ->getName (),
69+ $ defaultValue ? $ parameter -> getDefaultValue () : $ this ->createMock ($ type -> getName () ),
70+ $ defaultValue ? false : $ type ->getName (),
7271 ];
7372 }
7473
@@ -95,6 +94,10 @@ private function __createAndGetMethodParams(
9594 [$ mocked , $ type ] = $ this ->__createMockedServiceParameter ($ class , $ parameter , $ method );
9695 $ params [] = $ mocked ;
9796
97+ if (false === $ type ) {
98+ continue ;
99+ }
100+
98101 $ this ->mocks [$ class ][$ type ] = $ mocked ;
99102 }
100103
0 commit comments