php - Symfony2 & PHPUnit - Access getContainer() -
i have problem phpunit test on symfony2. connect application, use web service, created userprovider. in function loaduserbyusername
use symfony2 parameters saved in app/config/parameters.yml
. i'm not in controller need use global variable $kernel
, args this:
global $kernel; $url = $kernel->getcontainer()-getparameter('myparam');
when use application, works, when write test this:
$crawler = $client->request('get', '/login'); $form = $crawler->selectbutton('submit')->form(); $form['_username'] = $username; $form['_password'] = $pass;
and execute phpunit error :
fatal error : call member function getcontainer()
how can access symfony2 parameters or use getcontainer
when execute phpunit?
in symfony documentation how create custom userprovider, under 'create service user provider' states:
the real implementation of user provider have dependencies or configuration options or other services. add these arguments in service definition.
so, rather using global $kernel variable should passing relevant parameters user provider service defining them arguments in service definition. example:
services: webservice_user_provider: class: acme\webserviceuserbundle\security\user\webserviceuserprovider arguments: [%parameter_one%, %parameter_two%, ...]
as service, user provider service class must have constructor takes arguments corresponding in service definition , stores them in private variables use in service's methods:
class webserviceuserprovider implements userproviderinterface { private parameterone; ... public function __construct($parameterone, ...) { $this->parameterone = $parameterone; ... } ... }
i've been writing symfony apps 4 years , i've never need use global $kernel variable. daresay there may valid circumstances in general i'd it's avoided.
Comments
Post a Comment