2009-11-13 5 views
3

Je travaille sur un énorme projet dans mon travail. Nous avons environ 200 tables de base de données, en conséquence un grand nombre de modèles, d'actions et ainsi de suite.Comment tester unitairement un projet entreprise symfony?

Comment devrais-je commencer à écrire des tests pour cela?

Mon plus gros problème est qu'avec symfony vous pouvez tester avec le framework lime, ce qui est génial. Mais la plupart du code écrit, supprime ou fait d'autres choses avec la base de données. Alors, comment puis-je tester un modèle sans interagir avec la base de données? Je veux faire des tests unitaires parce que j'ai eu des problèmes avec des bugs dans mon code, à travers le refactoring des fonctions mais je ne sais même pas comment démarrer. Les exemples de la documentation ne couvrent qu'une très petite fonction. A quoi ça ressemble, quand le fichier d'action contient plus de 700 lignes de code?

Répondre

2

Grande question .. J'ai personnellement couru dans tout cela partout.

Voici ce que j'ai trouvé à ce jour:

1) Inscrivez-vous une base de données de dev .. NE PAS tester sur une base de données de prod!

2) Cela peut sembler banal, mais commencer petit et simple.

3) Je ne sais pas quel est votre domaine (base de données e-commerce, base de données de contacts, etc ...) mais dites que c'est une base de données e-commerce. Commencez par tester la création de modèles de commande et enregistrez-les. Peut-être recréer un ordre réel dans un harnais de test afin qu'il enregistre dans la base de données. Maintenant, vous pouvez rapidement créer 1000 commandes pour exécuter des tests sur ... WAY plus rapidement que de faire manuellement des vérifications Web pour les choses. Pour un bénéfice maximal, créez un modèle de quelque chose sur lequel vous travaillez actuellement afin de pouvoir l'utiliser pendant vos tests.

4) Maintenant, commencez à tester les différentes méthodes que votre modèle fournit. Encore une fois, s'en tenir à ceux qui sont pertinents à ce que vous essayez actuellement de réparer/travailler avec. Ne vous inquiétez pas de tout tester, juste tester quelques trucs, et assurez-vous que vous pouvez répéter vos tests.

5) Besoin de tester les contrôleurs? Cool, maintenant tu as un modèle avec lequel tu ne te soucies pas de gâcher, car ce n'est pas réel ... Besoin de quelques variations? Créez plus de suites de tests qui construisent des modèles différents pour répondre à chacun de vos besoins. Les modèles peuvent être complexes, mais vous devriez être capable d'écrire des fonctions de test qui créent des variations de vos différents modèles. Ensuite, exécutez vos contrôleurs contre ceux ...

6) Continuez à cueillir loin de la couverture de code.

ATTENTION: Soyez prudent d'être le seul exécutant les tests unitaires .. Vous allez rapidement devenir résolution de problèmes les plus efficaces, mais les gens vont essayer alors pour vous permettre de fixer tout ...

0

700 lignes dans une seule action du contrôleur? Les tests permettent d'exposer les problèmes de votre propre code d'une autre manière que les affirmations évidentes. Si quelque chose est difficile à tester pour une raison quelconque, il y a un problème avec le code. Lorsque vous commencez à tester un projet, petit ou grand, l'accent doit être mis sur la couverture de code. Ne vous inquiétez pas tant des cas de bordure au début (à moins que la situation l'exige). Lorsque je commence à tester un projet, j'aime commencer par les modèles, car ils sont les plus simples. À partir de là, passez aux tests du contrôleur et voyez comment ça se passe.

Questions connexes