Ruby on Rails测试(flash msgs和views)和I18N的最佳实践

Pas*_*cke 4 testing ruby-on-rails internationalization

在测试Flash消息和生成的视图时,是否应该使用一种语言测试生成的输出:

should_set_the_flash_to /Hello/i
Run Code Online (Sandbox Code Playgroud)

或者你应该把I18N带入你的测试中:

should_set_the_flash_to I18n.t("sign_up.welcome")
Run Code Online (Sandbox Code Playgroud)

可能是我的问题不是正确的问题...如果已经有很好的解释结合测试和i18n,请随意回答链接...

更新:在Arsen7的回答之后输入正确的国际化代码,thx Arsen7!

Ars*_*en7 5

这取决于你想要测试什么.

如果您测试flash文本是否为"Hello",那么您确定知道用户将看到的内容.

另一方面,测试flash是否包含与帮助器"t"为给定字符串返回的内容相同的内容,有时也是有意义的 - 例如,当您的翻译文件经常更改,或者其内容是由其他人创建时,有时后来.

我个人总是测试确切的最终翻译(assert_equal "Hello", flash[:message]事情的种类).

它向我保证:1)翻译听起来不错,2)语言被正确识别(你不想为你的英语用户提供波兰语消息,对吗?)

至于你问题的第二部分:

也许" should_set_the_flash_to I18n.t("sign_up.welcome")"会起作用吗?