2.2 KiB
Mink integration
SymfonyExtension provides an integration with Mink and defines a dedicated, isolated driver to use for Symfony application testing.
Installation
- Require the packages needed for the driver using Composer:
composer require --dev friends-of-behat/mink friends-of-behat/mink-extension friends-of-behat/mink-browserkit-driver
Those friends-of-behat packages are forks of the original ones, adding support for Symfony 5 and dropping support for Symfony <4.4.
- Enable the bundled driver:
# behat.yaml.dist / behat.yaml
default:
extensions:
# ...
Behat\MinkExtension:
sessions:
symfony:
symfony: ~
Usage
In order to use Mink, pass the Session to the constructor and call methods on it in the context.
use Behat\Behat\Context\Context;
use Behat\Mink\Session;
use Symfony\Component\Routing\RouterInterface;
final class DemoContext implements Context
{
/** @var Session */
private $session;
/** @var RouterInterface */
private $router;
public function __construct(Session $session, RouterInterface $router)
{
$this->session = $session;
$this->router = $router;
}
/**
* @Then I visit some page
*/
public function visitSomePage(): void
{
$this->session->visit($this->router->generate('some_route'));
}
}
Calling any method on Mink-related services in the constructor is not permitted and will cause errors.
Shared services
This integration provides the following services to use inside Symfony container:
-
behat.mink(autowired by\Behat\Mink\Mink) - the Mink service -
behat.mink.default_session(autowired by\Behat\Mink\Session) - the default Mink session for the current scenario -
behat.mink.parameters(autowired by\FriendsOfBehat\SymfonyExtension\Mink\MinkParameters) - an object containing the configuration parameters ofMinkExtension(implementing\ArrayAccessso that it can be treated as an array) -
behat.driver.service_container- service container used by thesymfonyMink driver, useful for assertions based on application state after a request has been handled