PHPUnit con lo Zend Framework

Ciao Gianni, sto utilizzando PHPUnit per la stesura dei test per un esercizio, solo che il codice che andrò ad implementare utilizza lo zend framework, il problema è che PHPUnit non mi considera gli include e mi allerta dell'impossibilità di includere tutti i file necessari.

UserTest.php

include 'User.php';
include 'PHPUnit/Framework.php';

class UserTest extends PHPUnit_Framework_TestCase
{
   protected $_fixture;

   public function setUp()
   {
      $this->_fixture = new User();
   }

   public function testUserRegistration()
   {
      $condition = $this->_fixture->usernameAlreadyExists();
      if ($contidition) {
         $this->fail();
         return;
      }
      $this->assertFalse($condition, 'Username already exists');
   }

   public function testUsernameIsAlreadyRegistred()
   {
      $this->assertFalse($this->_fixture->usernameAlreadyExists());
   }
}

User.php

require_once 'Gulp/Model.php';
require_once 'Zend/Auth/Adapter/DbTable.php';

class User extends Gulp_Model
{
   protected $_auth;

   protected function _init()
   {
      $this->_auth = Zend_Auth::getInstance();
   }

    public function login($username, $password)
    {
      $authAdapter = new Zend_Auth_Adapter_DbTable($this->_db);
      $authAdapter->setTableName('users')
                  ->setIdentityColumn('username')
                  ->setCredentialColumn('password')
                  ->setCredentialTreatment('md5(?)');

      $authAdapter->setIdentity($username)
                    ->setCredential($password);

        $result = $this->_auth->authenticate($authAdapter);
       return $result;
   }

   public function usernameAlreadyExists($username)
   {
      $sql = $this->_db->select()
                   ->from('users', Array('count' => 'count(*)'))
                   ->where('username=?', $username);
      $query = $this->_db->query($sql);
      if ($query) {
         $result = $this->_db->fetchOne($query);
         if (true == $result[0]) {
            return true;
         }
         return false;
      }
      throw new Exception('Failed username existence check.');
   }
}

UserTest.php e User.php si trovano nella stessa cartella, ma il resto (Zend Framework e altre librerie) si trova in una directory differente, ovviamente non si trovano nell'include path ma questo viene settato nel file di bootstrap.

Che devo fare? Mettere tutte le cartelle nell'include path?

O PHPUnit permette di configurare "localmente" l'include path in modo che riesca a risolvere tutte le inclusioni?

 :bye:

inviato 8 anni fa
Andrea Turso
Andrea Turso
86
modificato 8 anni fa
X 0 X

Se non sbaglio tutto lo Zend Framework è sviluppato con PHPUnit ed anzi, nello zippone del framework ci dovrebbero essere i test effettuati. Se è così potresti prendere spunto.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

si è vero, avevo pensato di darci un'occhiata poco prima di appisolarmi ieri sera.

è il momento di farlo ;D

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

È davvero un bel casino :P, dunque tutti i test sono registrati in una suite generale, prima di eseguire la suite generale viene incluso testHelper.php che configura "l'ambiente" per i tests.

La configurazione di default dei moduli si trova in TestConfiguration.php.dist.

Credo di aver capito, ora mi tocca entrare nella mentalità del TDD ed applicarlo a tutti i miei progetti.

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda