Skip to content

Commit b8f00a1

Browse files
Merge pull request #3 from arlina-espinoza/closure-serialization
Fix closure serialization issue on request matcher.
2 parents 6a95847 + a0522f1 commit b8f00a1

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"license": "Apache-2.0",
1515
"require": {
1616
"guzzlehttp/psr7": "~1.0",
17+
"jeremeamia/superclosure": "^2.4",
1718
"php-http/client-common": "^1.9",
1819
"php-http/httplug": "^1.1",
1920
"psr/http-message": "^1.0"

src/MockStoragePropertyTrait.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Apigee\MockClient\Psr7\SerializableMessageWrapper;
2222
use Http\Message\RequestMatcher;
2323
use Psr\Http\Message\ResponseInterface;
24+
use SuperClosure\SerializableClosure;
2425

2526
/**
2627
* A trait for dealing with the mock storage property.
@@ -50,14 +51,15 @@ public function on(RequestMatcher $requestMatcher, $result) {
5051
if ($result instanceof \Exception || $result instanceof ResponseInterface || is_callable($result)) {
5152
// Some storage provides will try to serialize the result.
5253
$result = $result instanceof ResponseInterface ? new SerializableMessageWrapper($result) : $result;
54+
5355
// Normalize to a callable result.
54-
$callable = is_callable($result) ? $result : function () use ($result) {
56+
$callable = is_callable($result) ? $result : new SerializableClosure(function () use ($result) {
5557
if ($result instanceof \Exception) {
5658
throw $result;
5759
}
5860
// The only other available type for $result is `SerializableMessageWrapper`.
5961
return $result->getMessage();
60-
};
62+
});
6163

6264
$this->storage->addMatchableResult(new MatchableResult($requestMatcher, $callable));
6365
} else {

0 commit comments

Comments
 (0)