@@ -53,22 +53,14 @@ public function getDouble(
53
53
$ mockBuilder ->setConstructorArgs ($ constructorParams );
54
54
}
55
55
56
- $ methods = [];
57
- $ onConsecutiveCalls = [];
58
- $ otherCalls = [];
56
+ [$ onConsecutiveCalls , $ otherCalls , $ methods ] = $ this ->processParams ($ params );
59
57
60
- foreach ($ params as $ key => $ val ) {
61
- if (is_int ($ key )) {
62
- $ onConsecutiveCalls = array_merge ($ onConsecutiveCalls , $ val );
63
- $ methods [] = array_keys ($ val )[0 ];
64
- } else {
65
- $ otherCalls [$ key ] = $ val ;
66
- $ methods [] = $ key ;
67
- }
58
+ if ($ methods === []) {
59
+ $ mock = $ mockBuilder ->getMock ();
60
+ } else {
61
+ $ mock = $ mockBuilder ->onlyMethods ($ methods )->getMock ();
68
62
}
69
63
70
- $ mock = $ mockBuilder ->onlyMethods ($ methods )->getMock ();
71
-
72
64
foreach ($ onConsecutiveCalls as $ method => $ returns ) {
73
65
$ mock ->expects ($ this ->any ())->method ($ method )
74
66
->will (
@@ -99,6 +91,30 @@ public function getDouble(
99
91
return $ mock ;
100
92
}
101
93
94
+ /**
95
+ * @param array<string, mixed>|array<array> $params [method_name => return_value]
96
+ *
97
+ * @return array{0: array<string, array<string>>, 1: array<string, mixed>, 2: string[]}
98
+ */
99
+ private function processParams (array $ params ): array
100
+ {
101
+ $ onConsecutiveCalls = [];
102
+ $ otherCalls = [];
103
+ $ methods = [];
104
+
105
+ foreach ($ params as $ key => $ val ) {
106
+ if (is_int ($ key )) {
107
+ $ onConsecutiveCalls = array_merge ($ onConsecutiveCalls , $ val );
108
+ $ methods [] = array_keys ($ val )[0 ];
109
+ } else {
110
+ $ otherCalls [$ key ] = $ val ;
111
+ $ methods [] = $ key ;
112
+ }
113
+ }
114
+
115
+ return [$ onConsecutiveCalls , $ otherCalls , $ methods ];
116
+ }
117
+
102
118
/**
103
119
* @param array<mixed>|null $params
104
120
* @param mixed $expects
0 commit comments