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
-~----------~----~----~----~------~----~------~--~---

Répondre à