Les tests fixtures sont un des moyens de gérer les données nécessaires aux tests. Le système de test fixtures de Ruby on Rails se distingue par sa grande facilité d’écriture. Les données sont saisies dans des fichiers YAML, et le système de test gère les id, les relations 1-n et les relations n-n.
Parfois les données brutes ne sont pas disponibles dans le bon format. L’éditeur vi (ou vim), disponible sur toutes les bonnes plateformes, dispose d’une commande d’édition par expressions régulières très puissante. Prenons un exemple. J’ai donc besoin de convertir une liste d’ATA au format YAML.
Format liste
21 : Air conditioning 22 : Auto flight 23 : Communications
Format YAML
21: number: 21 description: Air conditioning 22: number: 22 description: Auto flight 23: number: 23 description: Communications
La commande vi de substitution
Une « simple » commande suffit:
:%s/\([0-9][0-9]\) : \(.*\)/\1:\r number: \1\r description: \2\r/
Ça paraît un peu rude, mais c’est facile à décortiquer. Prenons la commande dans l’ordre.
%toutes les lignes du fichiers/.../.../la commande de substitution qui va être appliquée à chaque ligne[0-9][0-9]deux chiffres ; je mémorise le numéro dans \1 en le mettant entre \( et \):deux points entre deux espace.*tout le reste de la ligne, que je \(mémorise\) dans \2- maintenant le remplacement : je récupère le numéro avec \1, que j’insère suivi de : et d’un saut de ligne
- insertion de
number:puis le numéro - insertion de
description:puis le texte récupéré
Facile, non ?
One Comment
Hello,
un petit commentaire pour te signaler que [0-9] peut être remplacé par \d (pour « digit »), et que [0-9][0-9] peut être remplacé par \d\{2\} (pour « deux digit »).
Concernant les tests dans ruby on rails, j’ai écrit récemment un article sur leur intérêt : http://blog.olivier-elmekki.com/2008/09/27/test-driven-development-avec-ruby-on-rails/
À bientôt