欠落している翻訳ルックアップのテストを書いています — RSpec の初心者です。言い換えれば、ビューで表示されるすべてのテキストが translate メソッドを介して渡されるという仕様を書いています。
翻訳の欠落ではなく、翻訳ルックアップの欠落 (ソース コードに #t または #translate メソッドの呼び出しがない) を指します。
そのために、i18n 変換メソッド (I18n#t) をスタブ化します。
それを行うには、RSpec2 が使用しているビュー インスタンスを見つけるにはどうすればよいですか? このビュー インスタンスには、モジュール ActionView::Helpers::TranslationHelper が含まれています。そのビュー オブジェクトへのアクセスを取得できれば、translate メソッドをスタブ化できると思います。ところで、@controller から始めるべきだと思います。
ビューの変換ヘルパー メソッド #t を見つけてスタブ化することを除いて、仕様の他のすべては通常の方法で機能します (失敗したテストを含む)。render_views を使用しています。
(さまざまな方法で) #helper、#translate、#view を試しました。多分私は何かを逃していますか?
メソッド #translate を使用してすべてのオブジェクトを ObjectSpace で (私のテストで) 検索すると、クラスが I18n::Backend::Simple であるため、オブジェクトを取得できました。したがって、私の仕様は機能しますが、コードが ObjectSpace を検索する必要がなければ、おそらくはるかに高速になります!
背景として、最も単純なテスト計画は、RSpec コントローラー テストで各コントローラーのアクションをループし、目に見えるアルファベット文字を探すことのようです。まず、Rails の変換ヘルパーをスタブして空の文字列を返します。また、タグ名だけでなく、スクリプトやスタイルのタグも削除します。
私の Gemfile には、capybara 1.1.4、capybara-webkit 0.12.1、factory_girl 4.1.0、factory_girl_rails 4.1.0、rails 3.2.9、rspec 2.12.0、rspec-rails 2.12.0 が含まれています。