@@ -14,7 +14,7 @@ final class MockerState
1414 public static function addCondition (
1515 string $ namespace ,
1616 string $ functionName ,
17- array $ arguments ,
17+ array | string $ arguments ,
1818 mixed $ result ,
1919 bool $ default = false
2020 ): void {
@@ -39,7 +39,7 @@ public static function addCondition(
3939 public static function checkCondition (
4040 string $ namespace ,
4141 string $ functionName ,
42- array $ expectedArguments ,
42+ array | string $ expectedArguments ,
4343 ): bool {
4444 $ mocks = self ::$ state [$ namespace ][$ functionName ] ?? [];
4545
@@ -51,10 +51,10 @@ public static function checkCondition(
5151 return false ;
5252 }
5353
54- private static function compareArguments (array $ arguments , array $ expectedArguments ): bool
54+ private static function compareArguments (array $ arguments , array | string $ expectedArguments ): bool
5555 {
5656 return $ arguments ['arguments ' ] === $ expectedArguments
57- || array_values ($ arguments ['arguments ' ]) === $ expectedArguments ;
57+ || ( is_array ( $ arguments [ ' arguments ' ]) && array_values ($ arguments ['arguments ' ]) === $ expectedArguments) ;
5858 }
5959
6060 private static function replaceResult (
@@ -75,13 +75,13 @@ private static function replaceResult(
7575 public static function getResult (
7676 string $ namespace ,
7777 string $ functionName ,
78- array $ expectedArguments ,
78+ &... $ expectedArguments ,
7979 ): mixed {
8080 $ mocks = self ::$ state [$ namespace ][$ functionName ] ?? [];
8181
8282 foreach ($ mocks as $ mock ) {
8383 if (self ::compareArguments ($ mock , $ expectedArguments )) {
84- return $ mock ['result ' ];
84+ return is_callable ( $ mock [ ' result ' ]) ? $ mock [ ' result ' ](... $ expectedArguments ) : $ mock ['result ' ];
8585 }
8686 }
8787 return false ;
@@ -91,12 +91,13 @@ public static function getDefaultResult(
9191 string $ namespace ,
9292 string $ functionName ,
9393 callable $ fallback ,
94+ &...$ arguments ,
9495 ): mixed {
9596 if (isset (self ::$ defaults [$ namespace ][$ functionName ])) {
9697 return self ::$ defaults [$ namespace ][$ functionName ];
9798 }
9899
99- return $ fallback ();
100+ return $ fallback (... $ arguments );
100101 }
101102
102103 public static function saveState (): void
@@ -113,11 +114,11 @@ public static function resetState(): void
113114 public static function saveTrace (
114115 string $ namespace ,
115116 string $ functionName ,
116- array $ arguments
117+ &... $ arguments
117118 ): int {
118119 $ position = count (self ::$ traces [$ namespace ][$ functionName ] ?? []);
119120 self ::$ traces [$ namespace ][$ functionName ][$ position ] = [
120- 'arguments ' => $ arguments ,
121+ 'arguments ' => & $ arguments ,
121122 'trace ' => debug_backtrace (),
122123 ];
123124
0 commit comments