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

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -