diff --git a/composer.json b/composer.json index 00b70c0c..2c731adb 100644 --- a/composer.json +++ b/composer.json @@ -10,9 +10,9 @@ "behat/behat": "^3.0.13", "friends-of-behat/mink-extension": "^2.3.1", "justinrainbow/json-schema": "^5.0", - "symfony/property-access": "^2.3|^3.0|^4.0|^5.0", - "symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0", - "symfony/dom-crawler": "^2.4|^3.0|^4.0|^5.0" + "symfony/property-access": "^2.3|^3.0|^4.0|^5.0|^6.0|^7.0", + "symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0|^6.0|^7.0", + "symfony/dom-crawler": "^2.4|^3.0|^4.0|^5.0|^6.0|^7.0" }, "require-dev": { diff --git a/src/Context/JsonContext.php b/src/Context/JsonContext.php index d835fc91..eb6d6221 100644 --- a/src/Context/JsonContext.php +++ b/src/Context/JsonContext.php @@ -276,6 +276,9 @@ public function theJsonNodeShouldExist($name) } catch (\Exception $e) { throw new \Exception("The node '$name' does not exist."); } + if (!$node) { + throw new \Exception("The node '$name' does not exist."); + } return $node; } diff --git a/src/HttpCall/HttpCallResultPoolResolver.php b/src/HttpCall/HttpCallResultPoolResolver.php index 988d8533..1de936b0 100644 --- a/src/HttpCall/HttpCallResultPoolResolver.php +++ b/src/HttpCall/HttpCallResultPoolResolver.php @@ -23,14 +23,35 @@ public function resolveArguments(\ReflectionClass $classReflection, array $argum if ($constructor !== null) { $parameters = $constructor->getParameters(); foreach ($parameters as $parameter) { - if ( - null !== $parameter->getClass() - && isset($this->dependencies[$parameter->getClass()->name]) - ) { - $arguments[$parameter->name] = $this->dependencies[$parameter->getClass()->name]; + if ($dependency = $this->resolveDependency($parameter)) { + $arguments[$parameter->name] = $dependency; } } } return $arguments; } + + private function resolveDependency(\ReflectionParameter $parameter) + { + if (method_exists($parameter, 'getType')) { + if ( + ($type = $parameter->getType()) && + !$type->isBuiltin() && + ($name = $type->getName()) && + isset($this->dependencies[$name]) + ) { + return $this->dependencies[$name]; + } + return null; + } + + if ( + null !== $parameter->getClass() + && isset($this->dependencies[$parameter->getClass()->name]) + ) { + return $this->dependencies[$parameter->getClass()->name]; + } + + return null; + } }