Je fais mes premier pas en TU sous Zend, donc je m'entraines à coder des TU pas franchement pertinant, mais plus pour m'entrainer à comprendre comment ça fonctionne et il y en a un qui me pose soucis.
Mon TU doit juste tester un retour de résultat de requête SQL suivant le paramètre envoyé et le comparer avec une valeur.
Or, en local et sur la plateforme Jenkins je me retrouve avec deux résultats différents :
- En local : mon TU se banane avant de finir, me levant une exception disant "Primary Key colomns (param_id) are not columns in this table()". Avec du pas à pas, j'ai reussi à trouver que l'exception était levée dans Zend_Db_Table_Abstract et que c'est la méthode __setupMetadata() censée remonté les metadonnées de ma table qui retourne nulle (pourquoi je ne sais pas...)
- Sur Jenkins : j'ai cette erreur :
Code : Tout sélectionner
ParamTest::testGetValueByParam
Zend_Application_Bootstrap_Exception: Circular resource dependency detected
require_once dirname(__FILE__) . '/../../' . 'init.php';
// Oft_PHPUnit_ControllerTestCase
// Zend_Test_PHPUnit_ControllerTestCase
// Zend_Test_PHPUnit_DatabaseTestCase
// PHPUnit_Framework_TestCase
class ParamTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
parent::setUp();
Oft_App::getInstance()->getDb();
}
public function testGetValueByParam ()
{
// Preparation
$oParam = new Admin_Model_Table_Param();
// Appel
$result = $oParam->getValueByParam('nbjour');
// Verification
$this->assertEquals(15, $result);
}
}
et ma classe (en résumé) :/**
* Table 'parametres'
*/
class Admin_Model_Table_Param extends Icip_Model_Table
{
protected $_name = 'parametres';
protected $_primary = 'param_id';
protected $_idColumn = 'param_id';
protected $_nameColumn = 'param_nom';
public function getTable ()
{
return $this->_name;
}
/**
* Methode recuperant la valeur d'un parametre
* suivant le nom du parametre
*/
public function getValueByParam ($param)
{
$select = $this->select();
$select->from($this->getTable(), "param_value");
$select->where("param_nom=?", $param);
$result = $select->query()->fetch();
return $result["param_value"];
}
}
La méthode getValueByParam () fonctionne très bien dans l'application, elle n'est pas en cause.Merci d'avance