Injected parameter test POC
This commit is contained in:
44
features/injecting_parameters_into_context.feature
Normal file
44
features/injecting_parameters_into_context.feature
Normal file
@@ -0,0 +1,44 @@
|
||||
Feature: Injecting parameters into context
|
||||
|
||||
Background:
|
||||
Given a context file "features/bootstrap/FeatureContext.php" containing:
|
||||
"""
|
||||
<?php
|
||||
|
||||
use Behat\Behat\Context\Context;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
|
||||
class FeatureContext implements Context
|
||||
{
|
||||
private $parameter;
|
||||
|
||||
public function __construct(string $parameter)
|
||||
{
|
||||
$this->parameter = $parameter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then the parameter should be injected into the context
|
||||
*/
|
||||
public function behatContainerShouldBeInjectedToTheContext()
|
||||
{
|
||||
if (null === $this->parameter || empty($this->parameter)) {
|
||||
throw new \DomainException('Required parameter was not injected!');
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
And an application kernel injecting a parameter into the FeatureContext class
|
||||
And a Behat configuration with the minimal working configuration for SymfonyExtension
|
||||
And a Behat configuration with the minimal working configuration for MinkExtension
|
||||
|
||||
|
||||
Scenario: Injecting parameters into context with SymfonyExtension
|
||||
Given a feature file "features/injecting_parameter_into_context.feature" containing:
|
||||
"""
|
||||
Feature: Injecting parameter into the context
|
||||
Scenario:
|
||||
Then the parameter should be injected into the context
|
||||
"""
|
||||
When I run Behat
|
||||
Then it should pass
|
||||
@@ -157,6 +157,48 @@ CON
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given /^an application kernel injecting a parameter into the FeatureContext class$/
|
||||
*/
|
||||
public function thereIsKernelInjectingParameterIntoFeatureContextClass(): void
|
||||
{
|
||||
$this->thereIsFile('app/AppKernel.php', <<<'CON'
|
||||
<?php
|
||||
|
||||
use Symfony\Component\HttpKernel\Kernel;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\Parameter;
|
||||
|
||||
class AppKernel extends Kernel
|
||||
{
|
||||
public function registerBundles()
|
||||
{
|
||||
return [
|
||||
new \Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
|
||||
new \FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle(),
|
||||
];
|
||||
}
|
||||
|
||||
public function registerContainerConfiguration(LoaderInterface $loader)
|
||||
{
|
||||
$loader->load(function (ContainerBuilder $container): void {
|
||||
$container->loadFromExtension('framework', [
|
||||
'test' => $this->getEnvironment() === 'test',
|
||||
'secret' => 'Pigeon',
|
||||
]);
|
||||
|
||||
$contextDefinition = new Definition(FeatureContext::class, [new Parameter('kernel.environment')]);
|
||||
$contextDefinition->setAutoconfigured(true);
|
||||
$container->setDefinition(FeatureContext::class, $contextDefinition);
|
||||
});
|
||||
}
|
||||
}
|
||||
CON
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given /^a feature file containing(?: "([^"]+)"|:)$/
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user