@@ -15,7 +15,7 @@ trait ServiceMockHelperTrait
15
15
/**
16
16
* @param class-string<object> $class
17
17
*
18
- * @return array{0: MockObject, 1: class-string}
18
+ * @return array{0: MockObject|mixed , 1: class-string|false }
19
19
*/
20
20
private function __createMockedServiceParameter (
21
21
string $ class ,
@@ -48,27 +48,26 @@ private function __createMockedServiceParameter(
48
48
$ type = $ type ->getTypes ()[0 ];
49
49
}
50
50
51
+ $ defaultValue = false ;
52
+
51
53
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
+ }
61
64
62
- /**
63
- * @var class-string<object> $final
64
- *
65
- * @noinspection PhpRedundantVariableDocTypeInspection
66
- */
67
- $ final = $ type ->getName ();
65
+ $ defaultValue = $ parameter ->isDefaultValueAvailable ();
66
+ }
68
67
69
68
return [
70
- $ this ->createMock ($ final ),
71
- $ type ->getName (),
69
+ $ defaultValue ? $ parameter -> getDefaultValue () : $ this ->createMock ($ type -> getName () ),
70
+ $ defaultValue ? false : $ type ->getName (),
72
71
];
73
72
}
74
73
@@ -95,6 +94,10 @@ private function __createAndGetMethodParams(
95
94
[$ mocked , $ type ] = $ this ->__createMockedServiceParameter ($ class , $ parameter , $ method );
96
95
$ params [] = $ mocked ;
97
96
97
+ if (false === $ type ) {
98
+ continue ;
99
+ }
100
+
98
101
$ this ->mocks [$ class ][$ type ] = $ mocked ;
99
102
}
100
103
0 commit comments