2010-11-22 11 views
4

あなたは一つの言語で生成された出力のためにテストする必要があり、フラッシュメッセージと生成されたビューをテスト:のRuby on Railsのベストプラクティス(フラッシュのMSGとビュー)とI18N

should_set_the_flash_to /Hello/i 

か、I18Nを持参してくださいそれは私の質問は、ちょうど求める権利問題ではないことが考えられ

should_set_the_flash_to I18n.t("sign_up.welcome") 

...テストと国際化を組み合わせることで優れた説明がすでに存在する場合は、リンクで応答して自由に感じる...

:あなたのテストに

更新:Arsen7の答えの後、正しい国際化コードを入力してください、thx Arsen7!

答えて

5

テストする内容によって異なります。

フラッシュテキストが「こんにちは」かどうかをテストすると、ユーザーに表示される内容がわかっていることがわかります。

一方、与えられた文字列に対してヘルパー "t"が返すものと同じものがフラッシュに含まれているかどうかをテストすると、時には翻訳ファイルが頻繁に変更されたり、そうでなければ、しばらくしてから。

私は、個人的には、常に正確な最終的な翻訳(assert_equal "Hello", flash[:message]種類)をテストします。

それはことを私に保証:の第二部については

(あなたは、あなたの英語のユーザーのためのポーランド語のメッセージをしたいあなたをしない)2)言語が正しく認識され、1)翻訳がOKに聞こえます?あなたの質問:

多分 "should_set_the_flash_to I18n.t("sign_up.welcome")"は動作しますか?

+0

Thx Arsen7! (私は作業中のI18n.t( "sign_up.welcome")コードで質問を更新しました。 –

+0

おそらく私は私の質問を正しいものにするか、Flash msgがレンダリングされるかをテストに分けるべきでしょうか? )、国際化が必要なものとして機能していること(2)、重要なフレーズがロケールの.ymlファイルに正しく入れられていることを示していますか?(1)私はむしろI18n.t( "sign_up.welcome") (3)私はassert_equal "Hello"、flash [:message]を選択します。まだ残っています:国際化がすべてのコントローラで正しく動作することを体系的にテストする方法はありますか?フラッシュmsgs? –

+0

あなたがテストする各ビューで2行のテストを組み合わせるかもしれません: 'should_set_the_flash_to" Hello "; assert_equal" Hello "、I18n.t(" key ")'文言が予期せず変更されたときに通知されます。問題が翻訳の変更や間違ったキーになっているかどうかを知ることができます。つまり、レンダリングされたページのテキストが正しい限り、I18nが動作するかどうかは関係ありません。実装ではなくエフェクトをテストしてください。ある日、あなたが他のライブラリを使用する代わりに、テストが成功したと報告します。 – Arsen7