Comment installer Codeception Mac
1) Download du fichier codecept.phar http://codeception.com/install
2) php codecept.phar bootstrap -> inititaliser l'environnement de test en créant un dossier test à la racine du projet
3) php codecept.phar generate:test unit user -> créer une structure de test pour l'entité user (exemple)
Ex de fichier créé:
<?php
class userTest extends \Codeception\TestCase\Test
{
/**
* @var \UnitTester
*/
protected $tester;
protected function _before()
{
//code à exécuter avant le test
}
protected function _after()
{
//code à exécuter après le test
}
// tests
public function testMe()
{
//code à exécuter pendant le test
}
}
4) Changer le fichier unit.suite.yml pour configurer Symfony pour les tests unitaires
class_name: UnitTester
modules:
enabled: [Asserts, UnitHelper, Symfony2, Doctrine2]
config:
Symfony2:
app_path: 'app'
environment: 'test'
debug: true
Doctrine2:
auto_connect: true
cleanup: true
5) php codecept.phar build -> mettre à jour les paramètres du projet avec les configs qu'on vient d'ajouter
6) codecept.phar run -> lancer le test dans le terminal
Exemple de test:
<?php
class userTest extends \Codeception\TestCase\Test
{
/**
* @var \UnitTester
*/
protected $tester;
protected $em;
protected function _before()
{
$container= $this->getModule('Symfony2')->container;
$this->em=$container->get('doctrine');
}
protected function _after()
{
}
// tests
public function testNewUserExists() //nom du test doit commencer par test
{
$this->assertNotEquals($this->em->getRepository("MyCoreBundle:User")->find(3)->getFirstName(), "Ana"); //le troisième user n'est pas Ana donc ça fera true
$this->assertEquals($this->em->getRepository("MyCoreBundle:User")->find(27879)->getFirstName(), "Ana"); //le 27879 user est Ana donc ça fera true
}
public function testAnaMatches() //nom du test doit commencer par test
{
$this->assertEquals($this->em->getRepository("MyCoreBundle:User")->find(25)->getFirstName(), "Ana"); //le 25 user n'est pas Ana donc ça fera un failure
}
//AssertEquals c'est une méthode qui sert à vérifier si la valeur est égal à la requête
}
Résultat dans le terminal:
MBP2K2:myproject Ana$ php codecept.phar run -> utiliser php bin/codecept run maintenant parce que ça plainte avec Guzzle
Codeception PHP Testing Framework v2.0.1
Powered by PHPUnit 4.1.3 by Sebastian Bergmann.
Acceptance Tests (0) ------------------------
---------------------------------------------
Functional Tests (0) ------------------------
---------------------------------------------
Unit Tests (2) ----------------------------------------------------------------------------------------------
Trying to test new user exists (userTest::testNewUserExists) Ok
Trying to test ana matches (userTest::testAnaMatches) Fail
-------------------------------------------------------------------------------------------------------------
Time: 535 ms, Memory: 25.00Mb
There was 1 failure:
---------
1) userTest::testAnaMatches
Failed asserting that 'Ana' matches expected null.
#1 /Users/Ana/Documents/Repositories/myproject/tests/unit/userTest.php:31
#2 /Users/Ana/Documents/Repositories/myproject/codecept.phar:7
FAILURES!
Tests: 2, Assertions: 3, Failures: 1.
MBP2K2:myproject Ana$
Le premier test fonctionne mais le deuxième non parce que l'utilisateur ne s'appelle pas Ana !