Donc je travaille avec CakePHP v1.2.5. Sur mon projet actuel, j'ai décidé de commencer à écrire des tests en codant la fonctionnalité (yay TDD). J'ai des problèmes avec le chargement des appareils.cakephp test de modèles unitaires, problème d'appareils
Pour aider dans le processus, je vais décrire mon code (vraiment très simple en ce moment). Mon modèle est défini comme si
// app/models/newsitem.php
<?php
class NewsItem extends AppModel
{
var $name='NewsItem';
}
?>
// app/tests/fixtures/newsitem_fixture.php
<?php
class NewsItemFixture extends CakeTestFixture
{
var $name = 'NewsItem';
var $import = 'NewsItem';
var $records = array(
array('id' => '1', 'title' => 'News Item 1', 'body' => 'This is the first piece of news', 'created' => '2007-03-18 10:39:23', 'modified' => '2007-03-18 10:41:31'),
array('id' => '2', 'title' => 'News 2', 'body' => 'This is some other piece of news', 'created' => '2009-05-04 9:00:00', 'modified' => '2009-05-05 12:34:56')
);
}
?>
// app/tests/models/newsitem.test.php
<?php
App::Import('Model', 'NewsItem');
class NewsItemTestCase extends CakeTestCase
{
var $fixtures = array('app.newsitem');
function setUp()
{
$this->NewsItem =& ClassRegistry::init('NewsItem');
}
function testFindAll()
{
$results = $this->NewsItem->findAll();
$expected = array(
array('NewsItem' => array('id' => '1', 'title' => 'News Item 1', 'body' => 'This is the first piece of news', 'created' => '2007-03-18 10:39:23', 'modified' => '2007-03-18 10:41:31')),
array('NewsItem' => array('id' => '2', 'title' => 'News 2', 'body' => 'This is some other piece of news', 'created' => '2009-05-04 9:00:00', 'modified' => '2009-05-05 12:34:56'))
);
print_r($results);
$this->assertEqual($results, $expected);
}
}
?>
Quoi qu'il en soit, mon problème est, quand je lance la suite de tests dans un navigateur (aller http://localhost/test.php), le coureur de cas de test tente de charger la disposition de mon application (ce qui est bizarre parce que je Je suis juste en train de tester le modèle) qui référence un autre modèle qui n'est évidemment pas chargé dans la base de données de test et j'obtiens une erreur. Si je supprime la ligne var $fixtures = array('app.newsitem')
de mon fichier NewsItemTestCase, le scénario de test fonctionne correctement, MAIS il ne charge pas les appareils (pour des raisons évidentes).
Des idées, des suggestions? Pour être honnête, j'ai un peu de mal à trouver plus de 3 tutoriels sur ce sujet.
Juste un heads-up. J'ai l'impression d'avoir résolu le problème en recréant le modèle et en testant les classes en utilisant l'utilitaire de la console de cuisson de cake. Le changement ne je vois est que la classe modèle est correctement (basé sur son opinion) est maintenant en application/modèles/news_item.php –