ana
6/24/2014 - 8:11 AM

Comment installer Codeception Mac

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 !