diff --git a/features/sanity_checks/accessing_a_context_in_another_context.feature b/features/sanity_checks/accessing_a_context_in_another_context.feature new file mode 100644 index 0000000..59cf842 --- /dev/null +++ b/features/sanity_checks/accessing_a_context_in_another_context.feature @@ -0,0 +1,70 @@ +Feature: Accessing a context in another context + + Scenario: Accessing a context in another context + Given a working Symfony application with SymfonyExtension configured + And a Behat configuration containing: + """ + default: + suites: + default: + contexts: + - App\Tests\SomeContext + - App\Tests\AnotherContext + """ + And a feature file containing: + """ + Feature: + Scenario: + Then it should pass + """ + And a context file "tests/SomeContext.php" containing: + """ + getEnvironment(); + + $this->someContext = $environment->getContext('App\Tests\SomeContext'); + } + + /** @Then it should pass */ + public function itShouldPass(): void + { + $this->someContext->someMethod(); + } + } + """ + And a YAML services file containing: + """ + services: + App\Tests\SomeContext: + public: true + + App\Tests\AnotherContext: + public: true + """ + When I run Behat + Then it should pass diff --git a/src/Context/Environment/InitializedSymfonyExtensionEnvironment.php b/src/Context/Environment/InitializedSymfonyExtensionEnvironment.php index b07da6e..6527899 100644 --- a/src/Context/Environment/InitializedSymfonyExtensionEnvironment.php +++ b/src/Context/Environment/InitializedSymfonyExtensionEnvironment.php @@ -72,9 +72,11 @@ final class InitializedSymfonyExtensionEnvironment implements SymfonyExtensionEn } /** + * @see http://behat.org/en/latest/cookbooks/accessing_contexts_from_each_other.html + * * @throws ContextNotFoundException */ - private function getContext(string $class): Context + public function getContext(string $class): Context { if (!isset($this->contexts[$class])) { throw new ContextNotFoundException(sprintf(