Salut à tous,
j'ai un test unitaire qui utilise data fixture de doctrine pour tester qu'un utilisateur est persisté si il n'existe pas dans ma table et qu'il ne le persiste pas si il n'est pas dans ma table pour ma connexion à ma base de donné j'utilise un entity_manager qui utilise mon parameter.ini et mon test fonctionne très bien mais sur ma BDD principal alors que j'aimerai qu'il me fasse des test sur une table monapli_tests car à chaque fois je purge ma BDD.
Je suis sur la PR9 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #Mon controller $user = new User(); $user->setMail($mail); /**Verification de l'existance de l'user dans MySQL*/ $em = $this->get('doctrine.orm.default_entity_manager'); $iamHere = $em->getRepository('MonAppliUser:User')->iamHere($user->getMail()); /**Si il n'existe pas dans MySQL on le créé*/ if(!$iamHere){ $em->persist($user); $em->flush(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #Fonction iamHere public function iamHere($mail) { $query = $this->_em->createQuery(' SELECT u.mail FROM MonAppliUser:User u WHERE u.mail = ?1 '); $query->setParameter(1, $mail); return $query->getResult(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #config_test.yml parameters: database.server.dsn: mysql:host=localhost;dbname=monappli_tests;port=3306
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #testController public function testUserNotExist() { $this->client = $this->createClient(); #Recupère l'entity manager $em = $this->client->getContainer()->get('doctrine.orm.default_entity_manager'); #Purge la base de donnée $executor = new ORMExecutor($em, new ORMPurger($em)); $executor->execute(array(new UserFixturesNotExist())); $crawler = $this->client->request('GET', '/login'); $form = $crawler->selectButton('Connection')->form(); $form['login[mail]']->setValue('mon@adress.fr'); $form['login[password]']->setValue('monPassword'); $this->client->submit($form); $iamHere = $em->getRepository('MonAppliUser:User')->iamHere('mon@adress.fr'); $this->assertEquals('mon@adress.fr', $iamHere[0]['mail']); }mon soucis c'est que pour purger la BDD il me faut un entity_manager donc si je met en paramètre 'database.connection' j'ai une erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#service.xml <?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <parameters> <parameter key="database.server.dsn">mysql:host=localhost;dbname=monappli;port=3306</parameter> <parameter key="database.server.username">user</parameter> <parameter key="database.server.password">passwd</parameter> </parameters> <services> <service id="database.connection" class="PDO"> <argument>%database.server.dsn%</argument> <argument>%database.server.username%</argument> <argument>%database.server.password%</argument> <call method="setAttribute"> <argument type="constant">PDO::ATTR_ERRMODE</argument> <argument type="constant">PDO::ERRMODE_EXCEPTION</argument> </call> <call method="setAttribute"> <argument type="constant">PDO::MYSQL_ATTR_INIT_COMMAND</argument> <argument type="string">SET NAMES UTF8</argument> </call> </service> </services> </container>
Partager