2

コンテンツが html の翻訳キーである場合に、ビューが正しいコンテンツをレンダリングすることをテストするテストを作成する方法を見つけようとしています。もう少し詳しく説明するために、次の rspec テストがあります。

require 'spec_helper'
describe "application/error_404.html.erb" do
  I18n.available_locales.each do |locale|
    it "should have 'not found text' in #{locale}" do
      I18n.locale = locale
      render
      rendered.should have_content I18n.t(:not_found_html)
    end
  end
end

:not_found_html利用可能な各ロケールでレンダリングされることをテストします。しかし、html のない文字列を探すため、テストは失敗します。

Failure/Error: rendered.should have_content I18n.t(:not_found_html)
       expected there to be content "Could not find the page or item you tried to view. 
         Please try again and if the problem persists please <a href=\"%{contact_link} \">let us
         know</a> so we can fix this."
       in
         "\n\t\n\t\t\tNot found\n\t\t\n\t\n\t\t\t\n\t\t\t\tCould not find the page or item you tried
         to view. Please try again and if the problem persists please let us know so we can fix
         this.\n\t\t\t\t\n\t\t\n\t"

これを機能させる方法を知るには、レールについて十分に知りません。I18n 文字列だけをレンダリングするには、何らかの方法が必要でしょうか? これに関するヘルプは大歓迎です。

4

1 に答える 1

0

I18n.t(:not_found_html) は文字列のみをレンダリングします。

あなたがすることができます:

I18n.available_locales.each do |l| 
  I18n.locale = l
  I18n.translate! :not_found_html
end

見つからない場合は I18n::MissingTranslationData が発生します。

于 2012-08-20T09:12:07.097 に答える