2011-06-09 4 views
0

Je souhaite tester les opérations de base de CRUD dans CakePHP (1.3) en utilisant SimpleTest.
Par exemple, je souhaite ajouter un nouvel enregistrement et m'assurer que je reçois un message d'erreur si la validation échoue et un nouvel enregistrement si la sauvegarde se passe bien. Est-il préférable d'écrire ces tests en tant que (1) tests de contrôleur pour l'action pertinente (par exemple add()), ou en tant que (2) Web Tests, en utilisant $ this-> post() ou $ this-> setField() ?CakePHP SimpleTest - Test du contrôleur vs test Web

Répondre

1

C'est une question ancienne, mais toujours pas de réponse donc je vais donner un coup de feu ...

Je crois que la première chose que vous devez faire est de mieux à part vos préoccupations. En ce moment, ce que vous faites, au moins pour moi, c'est un code smell ... ce qui veut dire que quelque chose ne va pas!

Comment suis-je arrivé à cette conclusion?

Eh bien, la question que vous avez posée et comment vous y répondez. La question que vous posez est:

« Comment tester une fonctionnalité de modèle ? »

Votre réponse:

« Testez-le à partir du contrôleur ou vue »

Ainsi, la première chose que je voudrais faire est de configurer une méthode dans la appropriée modèle pour faire ce que vous voulez. Ecrivez le code dont vous pensez avoir besoin. Enregistrez un enregistrement et renvoyez les valeurs appropriées que vous recherchez en vous basant sur les instructions conditionnelles que vous proposez. Après cela, j'aurais mis en place quelques appareils afin que vous ayez des données à tester. Vous pouvez en savoir plus sur les appareils CakePHP et la façon de les créer au manuel CakePHP, http://book.cakephp.org/view/1201/Preparing-test-data(Dans les projets futurs que je ferais les montages d'abord, mais c'est juste une préférence personnelle)

Une fois que vos appareils sont configurés, vous pouvez aller de l'avant et tester votre nouvelle méthode de modèle. Selon moi, les modèles de test sont les plus faciles à tester dans CakePHP. Je ne vais pas entrer dans les détails ici, seulement parce que le manuel de CakePHP, http://book.cakephp.org/view/1207/Testing-models, a un tas d'informations sur la façon de tester les modèles.

À ce stade, vous devez avoir une action de modèle correctement testée et correctement séparés. Cela étant dit, si vous vous sentez super courageux et que vous voulez tester votre code sous tous les angles, alors, bien sûr, installez un test de contrôleur pour vous assurer que l'action fonctionne correctement. Configurez un test Web pour vous assurer que l'ensemble du paquet fonctionne ensemble.

Tout d'abord, séparez vos préoccupations.

+0

Un grand merci pour la réponse informative. J'ai des tests pour les modèles, mais je souhaite tester que tout le processus fonctionne correctement, car il y a quelques manipulations sur les données avant qu'elles ne soient sauvegardées ou affichées. Je ne veux pas passer du temps à écrire à la fois des tests de contrôleurs et des tests sur le Web - je serais heureux d'apprendre ce que vous préférez. – user790665

+2

Si vous voulez vous assurer que votre application fonctionne ensemble dans son ensemble, je dirais tous les trois. Modèle, contrôleur et test web. C'est la seule façon d'être même à distance en croyant que votre code est stable. Pas de tests == pas de stabilité – cspray