testing things
TRANSCRIPT
@vincentchalamon
Vincent CHALAMON
Lead developer chez Les-Tilleuls.coop
github.com/vincentchalamon
Konstantin Kudryashov
github.com/everzet
@everzet
http://behat.org/
« A php framework for attesting your business
expectations. »
• Séparation des scénarios (features) et du code (context)
• Configurable : behat.yml
• Multitude d’options : suites, tags, hooks, extensions, plugins, air conditionné, autoradio, bluetooth, WiFi… ;-)
• Pas dangereux pour les enfants !
• Souvent mal utilisé :-(
Étendre
Symfony2 Extension
Installation de Behat et extensions : composer.json
Injection des services Symfony dans les Contexts
Étendre
Installation de l’extension Behatch : composer.json
Behatch Extension
Propose des méthodes pour vos Contexts
Étendre
Installation de l’extension ScenarioStateBehat : composer.json
ScenarioStateBehat Extension
Ajout du paramètre authenticatedUser
Injection du paramètre authenticatedUser
Utiliser
• Restez positifs (comme les protons)
like a boss
I should not be authorized => I should be unauthorized
• Scénarios non techniques => Behat c’est plus que ça (Samuel ROZE)
• Pas de dépendances entre scénarios
• BDD is love, BDD is life ! (Behavior Driven Development)
Utiliser
Gestion des données
like a boss
• Fixtures : Doctrine, Alice…=> On ne crée que ce dont on a besoin !
• Utilisez l’ORMPurger de Doctrine lors d’un hook Behat @BeforeScenario
« PHPUnit is a programmer-oriented
testing framework for PHP. »
Sebastian Bergmann
github.com/sebastianbergmann
@s_bergmann
https://phpunit.de/
• Prévu initialement pour les tests unitaires Test unitaire : « (…) procédure permettant de vérifier le bon fonctionnement d'une partie précise d'un logiciel ou d'une portion d'un programme »
• Configurable : phpunit.xml
• Multitude d’options : dataProvider, mocks, bridges, events…
• Mets en évidence la qualité du code
• Programmer-oriented
Mocks : « objets simulés qui reproduisent le comportement d'objets réels de manière
contrôlée »
• Mockery
• Mock builder
• Prophecy
Pourquoi utiliser des mocks ?
• Simplifie l’écriture des tests : injection des dépendances
• Maîtrise du code : pas d’appel inattendu, optimisation du code
• Mise en évidence de la qualité du code : Loi de Déméter
Loi de Déméter
« Ne parlez qu'à vos amis immédiats »
• On n’injecte que les dépendances directes
• Mise en exergue grâce aux tests unitaires : trop de mocks imbriqués = non respect de cette loi
• Améliore la qualité du code : un code simple, minimaliste, optimisé :-)
Bonnes pratiques :
• shouldBeCalledTimes : maîtrisez vos appels
• TDD : Test Driven Development
• Respectez la Loi de Déméter
• Objectif évolutif : 60% de couverture de code, en augmentation au fil du projet
Merci !
#SuperApéroPHP
@coopTilleuls
https://github.com/gorghoa/ScenarioStateBehatExtension
https://github.com/Behatch/contexts
https://github.com/Behat/Symfony2Extension
https://fr.slideshare.net/samuelroze/behat-cest-plus-que-a-behat-is-more-than-that
slideshare.net/VincentCHALAMON/testing-things