Hi,
I'm trying to follow the 2nd snippet of the doc here https://github.com/InterNations/http-mock/blob/main/doc/stubbing.md but I get an error. I'm not sure if I'm doing something wrong or if there is an issue and I would be thrilled if you can give me pointer to fix it.
Here is my code:
<?php
declare(strict_types=1);
use InterNations\Component\HttpMock\PHPUnit\HttpMockTrait;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Request;
final class CalDAVUTest extends TestCase {
use HttpMockTrait;
public static function setUpBeforeClass() : void {
static::setUpHttpMockBeforeClass('8082', 'localhost');
}
public static function tearDownAfterClass() : void {
static::tearDownHttpMockAfterClass();
}
public function setUp() : void {
$this->setUpHttpMock();
}
public function tearDown() : void {
$this->tearDownHttpMock();
}
public function test_doc(){
$this->http->mock
->when()
->callback(
static function (Request $request) {
return $request->getMethod() === 'GET' && $request->getPathInfo() === '/resource';
}
)
->then()
->callback(
static function (Response $response) {
$response->setBody('response');
}
)
->end();
$this->http->setUp();
$curl = curl_init("http://localhost:8082/resource");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_exec($curl);
}
}
and here is the error I have:
1) CalDAVUTest::test_doc
HTTP mock server standard error output should be empty
Failed asserting that two strings are identical.
--- Expected
+++ Actual
@@ @@
-''
+'[Tue Dec 21 22:59:15 2021] PHP Fatal error: Uncaught Error: Function name must be a string in /documents/zwp/slack-agenda-app/vendor/jeremeamia/superclosure/src/SerializableClosure.php(210) : eval()'d code:2
+Stack trace:
+#0 [internal function]: InterNations\Component\HttpMock\Matcher\AbstractMatcher::{closure}()
+#1 /documents/zwp/slack-agenda-app/vendor/jeremeamia/superclosure/src/SerializableClosure.php(75): call_user_func_array()
+#2 /documents/zwp/slack-agenda-app/vendor/internations/http-mock/src/app.php(130): SuperClosure\SerializableClosure->__invoke()
+#3 [internal function]: InterNations\Component\HttpMock\{closure}()
+#4 /documents/zwp/slack-agenda-app/vendor/silex/silex/src/Silex/ExceptionListenerWrapper.php(53): call_user_func()
+#5 /documents/zwp/slack-agenda-app/vendor/symfony/event-dispatcher/EventDispatcher.php(264): Silex\ExceptionListenerWrapper->__invoke()
+#6 /documents/zwp/slack-agenda-app/vendor/symfony/event-dispatcher/EventDispatcher.php(239): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch()
+#7 /documents/zwp/slack-agen in /documents/zwp/slack-agenda-app/vendor/jeremeamia/superclosure/src/SerializableClosure.php(210) : eval()'d code on line 2'
/documents/zwp/slack-agenda-app/vendor/internations/http-mock/src/PHPUnit/HttpMockTrait.php:73
/documents/zwp/slack-agenda-app/vendor/internations/http-mock/src/PHPUnit/HttpMockFacade.php:85
/documents/zwp/slack-agenda-app/vendor/internations/http-mock/src/PHPUnit/HttpMockTrait.php:75
/documents/zwp/slack-agenda-app/tests/CalDAVUTest.php:20
Here is the relevant part of my composer.json
:
"require-dev": {
"phpunit/phpunit": "^9.5",
"internations/http-mock": "^0.14.0"
}
(and in my composer.lock
I see that I'm using jeremeamia/superclosure
version 2.4.0
)
Does this error rings a bell?