Je n’ai pas de ressource en tête…
TL;DR : Oui !
Laisse-moi tenter de m’expliquer avec un exemple caricatural d’un projet avec une base de donnée, comme fixture tu peux avoir de la donnée à charger en base de donnée (qq utilisateurs, éventuellement avec des droits différents, et quelques valeurs “basiques” pour chaque table, …). Avec une petite fixture comme ça on peut déjà rédiger énormément de tests, ce n’est pas grave si chaque test n’utilise pas toute la donnée chargée, il profite juste de ce qui est là.
Ça rend même les tests assez triviaux à écrire et lire une fois qu’on connaît les données de la fixture car c’est toujours les mêmes. Il faut par contre faire un effort sur le nommage, si tes utilisateurs dans ta fixture c’est “Bart”, “Lisa”, “Homer”, etc… Homer a les droits d’admin, Lisa a les droits “profs” et les autres sont de simples utilisateurs, c’est marrant, mais pour quelqu’un qui relit les tests c’est un truc de plus à apprendre par cœur. C’est pas dur. Mais c’est un effort. Alors que si tes utilisateurs c’est “user1” “user2”, “teacher1” et “admin1”, c’est transparent, tout le monde peut lire un test sans aucune culture préalable de ta “fixture initiale”.
Parfois ce genre de fixture n’est pas directement réutilisable et tu peux soit construire une nouvelle fixture en t’appuyant dessus (une fixture pouvant prendre une fixture en paramètre), soit si c’est vraiment à usage unique ton test peut repartir de la fixture de base et juste faire la petite modif nécessaire avant de commencer à tester.
Attention à ne pas s’engouffrer dans “ces petites modifs nécessaires” qui ont tendance à polluer les tests, s’il y en a trop, s’il y en a partout, ou si ces modifications ne sont pas du code trivial à lire. Attention à ne pas non plus introduire dans la fixture de base des cas ultra-particuliers nécessaire à un seul test, ça la rendrait moins lisible, on se demanderait très vite à quoi sert quoi, alors que “admin1”, “user1”, “user2” on se doute bien de leur utilité.
Si tu peux nous partager ton code, peut-être que ça peut nous inspirer pour te donner d’autres conseils, je veux bien partager, mais j’ai pas grand-chose d’intéressant, sniff :