Je voulais avoir un test raté et un qui fonctionne. Donc de ce point
de vue, ca marche parfaitement.
Pour le useTable je pense que ca vient effectivement de la facon de
faire l import (import des données). De nombreuses personnes utilisant
la meme methode ont eu le meme probleme que le mien.
esion wrote:
> function testMe() {
> $result = $this->TestObject->findAll();
> debug($result);
> $expected = 1;
> $this->assertEqual($result, $expected);
> [...]
> �a je vois pas trop comment �a peut fonctionner sur un findAll. Serait-
> ce un oubli?
>
> Je n'ai pas eu besoin de sp�cifier $useTable, la requ�te execut� :
> SELECT `User`.`id`, `User`.`username` FROM `test_suite_users` AS
> `User` WHERE 1 = 1
>
> Est-ce que c'est d� � tes fixtures et essentiellement la ligne
> import :
> var $import = 'array('table' => 'users', 'records' => true);
> ?
>
> On Feb 14, 11:59 pm, euphrate_ylb <[EMAIL PROTECTED]> wrote:
> > Pour faire marcher ce test simple, j'ai principalement du lutter pour
> > trouver les deux astuces suivantes:
> > 1. d�finir dans UserTest l'attribut useTable (sinon il cherche la
> > table users et pas user_tests)
> > 2. ne pas utiliser setUp et TearDown mais preferer startCase()
> > endCase()
> >
> > Bref merci bake pour ton travail a moitie fonctionnel!!
> >
> > Ce qui donne :
> >
> > // File fixture
> > class UserTestFixture extends CakeTestFixture {
> > var $name = 'UserTest';
> > var $import = 'array('table' => 'users', 'records' => true);
> >
> > }
> >
> > // File test
> > class UserTest extends User {
> > var $name = 'UserTest';
> > var $useDbConfig = 'test_suite';
> >
> > var $useTable = 'user_tests';
> >
> > }
> >
> > class UserTestCase extends CakeTestCase {
> > var $TestObject = null;
> >
> > var $fixtures = array( 'user_test' );
> >
> > function startCase() {
> > $this->TestObject = new UserTest();
> > }
> >
> > function endCase() {
> > unset($this->TestObject);
> > }
> >
> > function testMe() {
> > $result = $this->TestObject->findAll();
> > debug($result);
> > $expected = 1;
> > $this->assertEqual($result, $expected);
> >
> > $this->assertTrue($this->TestObject->save(
> > array(
> > 'UserTest' => array(
> > 'login'=> 'XXXXXXXXXXXXXXX',
> > 'password' =>
> > 'CCCCCCCCCCCCCCC',
> > 'created'=> '2008-01-27 03:56:13',
> > 'modified'=> '2008-01-27 03:56:13'
> > )
> > )
> > ));
> > }
> >
> > }
> >
> > On Feb 14, 4:11 pm, esion <[EMAIL PROTECTED]> wrote:
> >
> > > Je me suis remis aux tests unitaires aujourd'hui je te mets le code
> > > d'un test de m�thode �l�mentaire (Model::findAll() ) je l'esp�re de la
> > > mani�re la plus claire possible.
> >
> > > ################################
> > > ##On considere la configuration suivante :
> >
> > > CREATE TABLE `users` (
> > > `id` int(10) NOT NULL auto_increment,
> > > `username` varchar(40) NOT NULL,
> > > `password` varchar(40) NOT NULL,
> > > `email` varchar(255) NOT NULL,
> > > )
> >
> > > Le model user
> > > //FILE : app/models/user.php
> > > class User extends AppModel {
> > > var $name = 'User';
> >
> > > }
> >
> > > ######################
> > > ## Cr�ation des donn�es de tests : fixtures
> >
> > > //FILE : app/tests/fixtures/user_fixtures.php
> > > class UserFixture extends CakeTestFixture {
> > > var $name = 'User';
> > > var $import = 'User'; //import du schema de la table
> >
> > > var $records = array(
> > > array('id' => 1, 'username' => 'admin', 'password' =>
> > > '4308fb05a903a6c0add7534f3f73bee25ec16f3d' /*sha1+salt = admin*/,
> > > 'email' => '[EMAIL PROTECTED]'),
> > > array('id' => 2, 'username' => 'esion', 'password' =>
> > > 'esion',
> > > 'email' => '[EMAIL PROTECTED]'),
> > > array('id' => 4, 'username' => 'user', 'password' =>
> > > 'user', 'email'
> > > => '[EMAIL PROTECTED]'),
> > > );
> >
> > > }
> >
> > > ######################
> > > ## Test du Model
> >
> > > //FILE : app/tests/cases/models/user.test.php
> > > App::import('Model', 'User'); //Import du model
> >
> > > class UserTest extends User { //surcharge du model
> >
> > > var $name = 'User'; //D�finition des objets avec le nom d'origine
> > > var $useDbConfig = 'test'; //Sp�cification de la base de donn�es �
> > > utiliser
> >
> > > }
> >
> > > class UserTestCase extends CakeTestCase {
> > > var $fixtures = array('user'); //Appel des enregistrements : la
> > > table
> > > de test poss�de maintenant des enregistrements.
> >
> > > function testFindAll() { //test d'une m�thode par d�faut du model
> > > $this->TestObject =& new UserTest(); //Chargement du model
> > > $this->TestObject->recursive = 0;
> > > $result = $this->TestObject->findAll(array(), array('id',
> > > 'username')); //lancement de la m�thode
> > > //debug($result);
> > > $expected = array(
> > > array('User' =>
> > > array('id' => 1, 'username' => 'admin')),
> > > array('User' =>
> > > array('id' => 2, 'username' => 'esion')),
> > > array('User' =>
> > > array('id' => 4, 'username' => 'user'))
> > > );
> > > $this->assertEqual($result, $expected); //v�rification
> > > des r�sultats
> > > }
> >
> > > }
> >
> > > #####################
> > > ## D�roulement du test :
> >
> > > Lorsque user.test.php est lanc�
> > > 1- la classe UserTestCase est charg�e
> > > 2- fixtures est sp�cifi� : la table `test_suite_users` est cr��e dans
> > > la base de test (automagiquement, enfin je pense)
> > > 3- la m�thode testFindAll() est lanc�e
> > > 4- L'objet testObject est cr��
> > > 5- la m�thode findAll de testObject est lanc� et retourne les
> > > enregistrements (fixtures)
> > > 6- assert test le r�sultat
> > > 7- l'objet est d�truit ainsi que la table avec les enregistrements
> > > (automagiquements).
> >
> > > ##################
> > > ## Note :
> > > - Apparement les m�thodes setUp et TearDown g�n�r�s par bake pose des
> > > probl�mes pour l'appel de la classe UserTest
> > > - Je me trompe peut �tre (surement) sur le d�roulement du test.
> >
> > > ## hf
> >
> > > On 14 f�v, 14:35, avairet <[EMAIL PROTECTED]> wrote:
> >
> > > > Merci � tous les deux pour vos r�ponses, mais cela ne correspond pas �
> > > > mes questions...
> > > > C'est sans doute que je me suis mal exprim�.
> >
> > > > @euphrate : le tuto dans la Bakery date un peu et n'aborde pas les
> > > > tests unitaires g�n�r�s par le script Bake
> >
> > > > @esion : oui j'avais lu ta discussion, tr�s int�ressante, mais
> > > > malheuresuement rest�e sans v�ritable �mulation et rebonds
> >
> > > > En fait le testing et la g�n�ration de code sont les grands absents de
> > > > la doc pour le moment, mais vu que les tests �tait l'un des th�mes
> > > > importants de la Cake fest et qu'ils semblent l'un des chantiers les
> > > > plus actifs au sein de la core team, je pense que nous aurons
> > > > prochainement des infos plus pr�cises...
> >
> > > > Je reviens � mes questions quand m�me :
> >
> > > > - si je souhaite faire g�n�rer des tests unitaires, il semble
> > > > obligatoire d'avoir une base de test et de lui ins�rer les m�mes
> > > > tables que dans la base "default", sinon deux probl�mes surviennent :
> > > > 1) au lancement du test unitaire, il y a un gros warning qui me dit
> > > > que la table "xyz_test" n'existe pas 2) au moment o� l'on lance le
> > > > script Bake et que l'on dit vouloir travailler avec la base de test,
> > > > il est impossible de g�n�rer quoi que ce soit si la base est vide !
> >
> > > > >>>> il est donc obligatoire d'avoir une base test et de la peupler
> > > > >>>> avec des tables pour profiter � la fois des tests unitaires et de
> > > > >>>> leur g�n�ration par le script Bake ?!
> >
> > > > - si je choisis ma base "test" dans le script Bake, que je g�n�re tout
> > > > le code de base d'une application (mod�les et contr�leurs), Cake
> > > > �crit : $useDbConfig = 'test' dans l'ent�te des classes, donc ma
> > > > question : doit-on repasser partout pour remplacer "test" par
> > > > "default" lorsque la phase de test est termin�e ? ou bien doit-on
> > > > refaire toute la g�n�ration de code en indiquant cette fois au script
> > > > Bake que l'on utilise la base "default" ?
> >
> > > > J'esp�re que cela sera plus clair...
> >
> > > > @ +
> >
> > > > Avairet
> >
> > > > On 13 f�v, 23:18, esion <[EMAIL PROTECTED]> wrote:
> >
> > > > > J'avais lanc� ce sujet
> > > > > :http://groups.google.fr/group/cakephp-fr/browse_thread/thread/ea2641e...
> >
> > > > > J'ai quelque chose de plus ou moins fonctionnel et je dois dire que
> > > > > c'est loin d'�tre �vident. Et le tuto du bakery ne parle que du test
> > > > > de models et pas des controllers.
> >
> > > > > 1) Apparement peu importe la base de donn�es que tu choisis, lorsqu'un
> > > > > test est lanc� avec des fixtures celui-ci recreer les tables avec le
> > > > > prefixe "test_suite_ ".
> > > > > Les donn�es de la base (default ou test) vont servir aux tests
> > > > > seulement si les fixtures ne sont pas sp�cifi�s.
> >
> > > > > On 13 f�v, 19:16, euphrate_ylb <[EMAIL PROTECTED]> wrote:
> >
> > > > > > Dans la bakery je trouve que cet article relativement complet:
> >
> > > > > >http://bakery.cakephp.org/articles/view/testing-models-with-cakephp-1...
> >
> > > > > > Pour le moment nous n'utilisons pas vraiment les test unitaires
> > > > > > mais d
> > > > > > apres ce que je sais :
> >
> > > > > > 1. Tu peux dire grace a l'attribut import de a tes fixtures si tu
> > > > > > souhaites utiliser la structure de la base devfault voire meme les
> > > > > > data.
> > > > > > ex: var $import = array('model' => 'Article', 'records' => true);
> >
> > > > > > 2. ...
> >
> > > > > > 3. Pb de prefix dans la connexion?
> >
> > > > > > 4. Lorsque tu lances les test unitaire, la connexion 'test' est
> > > > > > utilis�e par defaut (si elle existe) sans rien changer dans tes
> > > > > > modeles
> >
> > > > > > En esperant que quelqu un te reponde plus pr�cisement.
> >
> > > > > > euphrate_ylb
> >
> > > > > > On Feb 13, 3:30 pm, avairet <[EMAIL PROTECTED]> wrote:
> >
> > > > > > > Bonjour � tous,
> >
> > > > > > > Quand on utilise le script Bake en ligne de commande, pour
> > > > > > > g�n�rer le
> > > > > > > code de base de notre application, on a la possibilit� de cr�er
> > > > > > > �galement les tests unitaires. Mais j'ai l'impression que tout ne
> > > > > > > marche pas comme pr�vu...
> >
> > > > > > > 1) Avant toute chose, doit on importer notre sch�ma SQL dans les
> > > > > > > deux
> > > > > > > bases : default et test ?
> >
> > > > > > > 2) On doit choisir une Database config : default ou test, mais le
> > > > > > > comportement et la g�n�ration des fichiers ne semble pas identique
> > > > > > > selon qu'on choisit l'un ou l'autre...
> >
> > > > > > > 3) Apr�s la cr�ation de mon mod�le, du fichier de test et de la
> > > > > > > fixture correspondante, si je lance mon test, j'ai de gros
> > > > > > > Warnings
> > > > > > > qui me disent, entre autres, que la table test_mymodel n'existe
> > > > > > > pas
> >
> > > > > > > 4) Si je veux g�n�rer mon code et mes tests unitaires, je choisis
> > > > > > > donc
> > > > > > > "test" comme Database config, mais alors, dois-je ensuite refaire
> > > > > > > tout
> > > > > > > le processus de g�n�ration en choisissant "default" ? Parce que le
> > > > > > > fait de lui indiquer "test" entra�ne l'insertion
> >
> > ...
> >
> > read more �
--~--~---------~--~----~------------~-------~--~----~
Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---