Peut être que cela pourra aider du monde :
Il suffisait d'aller jeter un oeil dans la direction de testAction() :
Je n'ai pas encore tout pris en main néanmoins j'ai quelques résultats
positifs (debug retourne quelque chose :D)
Le cas de test mis à jour :
<?php
//file : app/tests/cases/controllers/pages_controller.test.php
class PagesControllerTestCase extends CakeTestCase {
function testIndex(){
$result = $this->testAction('/pages/index', array('return' =>
'vars', 'method' => 'get'));
debug($result);
}
}
?>
Des infos ici : http://groups.google.fr/group/cake-php/search?q=testAction+1.2
(dans les premiers liens)
Apparement l'ajout de fixtures est pas top encore (ou alors j'ai fais
une erreur).
avec var $fixtures = array('page_test'); et $this->testAction('/pages/
index, array('return' => 'vars', 'method' => 'get', 'fixturize' =>
true));
Il m'insère bien les données du fixtures mais aussi celles de la base
de données principale ce qui n'est évidemment pas pratique..
On Jan 11, 7:40 pm, esion <[EMAIL PROTECTED]> wrote:
> Bonjour,
>
> J'essai d'utiliser les tests unitaires mais le manque de docs à ce
> sujet est un réel frein (la plupart des articles sont déjà dépassés).
> Je n'ai pas encore tout saisie au sujet des concepts unitaires mais je
> pense avoir l'essentiel parcontre le scenario me laisse encore très
> perplexe (surtout pour les fixtures).
>
> Tant bien que mal j'ai réussis à avoir des tests pour les Models.
> Parcontre je bloque pour les Controllers.
>
> Pour infos :
> cake version : cake_1.2.0.6311-beta
> Model, Controller et Unit test fraichement sortis d'un "bake".
>
> On considère :
> Model : Page
> Controller : PagesController
>
> //file : app/controller/pages_controller.php
> class PagesController extends AppController {
>
> var $name = 'Pages';
> var $helpers = array('Html', 'Form');
>
> function index() {
> $this->Page->recursive = 0;
> $this->set('pages', $this->paginate());
> }
>
> function view($id = null) {
> if (!$id) {
> $this->Session->setFlash(__('Invalid Page.', true));
> $this->redirect(array('action'=>'index'));
> }
> $this->set('page', $this->Page->read(null, $id));
> }
> //...}
>
> ?>
>
> Puis les tests sur le controller :
>
> //file : app/tests/cases/controllers/pages_controller.test.php
> <?php
>
> App::import('Controller', 'Pages');
>
> class PagesControllerTestCase extends CakeTestCase {
> var $TestObject = null;
>
> function setUp() {
> $this->TestObject = new PagesController();
> }
>
> function tearDown() {
> unset($this->TestObject);
> }
>
> function testIndex() {
> $result = $this->TestObject->index();
> $expected = true;
> $this->assertEqual($result, $expected);
> }
>
> function testView(){
> $result = $this->TestObject->view(1);
> $expected = true;
> $this->assertEqual($result, $expected);
> }}
>
> ?>
>
> Le tests ne se font pas correctement (à quelque chose près cela sort
> direct du bake), les messages d'erreurs sont respectivement :
>
> Fatal error: Call to undefined method stdClass::findCount() in MyCake/
> cake/libs/controller/controller.php on line 960
>
> et
>
> Fatal error: Call to a member function read() on a non-object in
> Mycake/app/controllers/pages_controller.php on line 23
>
> Ceci me fait dire qu'il test bien le controller (c'est déjà ça) mais
> le test ne peut pas accéder aux méthodes étendues au controller
> (read() ) ou pas completement (paginate() ) et à l'indentique avec
> setFlash()
>
> J'ai fais quelques essais hasardeux ... mais je trouve pas comment
> charger les méthodes nécessaires.
> J'espère que quelqu'un aura un petit peu de sa connaissance à
> partager.
>
> Thanks in advanceeuu.
--~--~---------~--~----~------------~-------~--~----~
Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---