Lorsque vous testez des messages Flash et des vues générées, si vous tester la sortie produite dans une langue:Ruby on Rails les meilleures pratiques dans les tests (les msgs flash et vues) et I18N
should_set_the_flash_to /Hello/i
ou si vous apporter I18N dans vos tests:
should_set_the_flash_to I18n.t("sign_up.welcome")
Il se pourrait que ma question est tout simplement pas la bonne question à poser ... ne hésitez pas à répondre avec un lien s'il y a déjà de bonnes explications sur la combinaison des tests et i18n ...
Mise à jour: mettez le bon code d'internationalisation après la réponse d'Arsen7, alors Arsen7!
Thx Arsen7! (J'ai mis à jour la question avec le code (de travail) I18n.t ("sign_up.welcome") –
Peut-être que je devrais reformuler ma question en: comment séparer mon test en testant que la bonne vue ou le msg Flash est rendu (1), et que l'internationalisation fonctionne comme requis (2) et que les phrases clés sont correctement placées dans les fichiers locaux .yml? Il me semble que pour (1) je préfère choisir I18n.t ("sign_up.welcome") (pour ne pas casser le test quand je change de libellé) et pour (3) je choisirais assert_equal "Bonjour", flash [: message] Encore à gauche: existe-t-il un moyen de tester systématiquement que l'internationalisation fonctionne correctement sur tous les contrôleurs et Flash msgs? –
Peut-être combiner deux lignes de test dans chaque vue que vous testez: 'should_set_the_flash_to" Bonjour "; assert_equal" Bonjour ", I18n.t (" key ")'? Vous serez averti lorsque le libellé change de façon inattendue, et vous saurez si le problème est dans la traduction changée ou dans la fausse clef. d disons que cela n'a pas d'importance si le I18n fonctionne, aussi longtemps que le texte sur la page rendue est correct. Testez l'effet, pas l'implémentation - si vous décidez un jour qu'au lieu de I18n vous utilisez une autre bibliothèque, votre test signalera toujours le succès (et ce sera bien). – Arsen7