From 3624da137ac73411e09ad8974364034ff6c55101 Mon Sep 17 00:00:00 2001 From: Gintautas Miselis Date: Sun, 24 Nov 2019 18:29:12 +0200 Subject: [PATCH] Fixed _failed handling with Symfony 5 --- src/Codeception/Lib/InnerBrowser.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Codeception/Lib/InnerBrowser.php b/src/Codeception/Lib/InnerBrowser.php index 776c3a4..6f5705e 100644 --- a/src/Codeception/Lib/InnerBrowser.php +++ b/src/Codeception/Lib/InnerBrowser.php @@ -21,6 +21,7 @@ use Codeception\Util\ReflectionHelper; use Codeception\Util\Uri; use Symfony\Component\BrowserKit\Cookie; +use Symfony\Component\BrowserKit\Exception\BadMethodCallException; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\DomCrawler\Field\ChoiceFormField; use Symfony\Component\DomCrawler\Field\FileFormField; @@ -73,8 +74,14 @@ public function _failed(TestInterface $test, $fail) 'application/xml' => 'xml', 'text/plain' => 'txt' ]; - - $internalResponse = $this->client->getInternalResponse(); + + try { + $internalResponse = $this->client->getInternalResponse(); + } catch (BadMethodCallException $e) { + //Symfony 5 throws exception if request() method threw an exception. + //The "request()" method must be called before "Symfony\Component\BrowserKit\AbstractBrowser::getInternalResponse()" + $internalResponse = false; + } $responseContentType = $internalResponse ? $internalResponse->getHeader('content-type') : ''; list($responseMimeType) = explode(';', $responseContentType);