Я пишу тест на отсутствие поисков перевода, и я начинаю с RSpec. Другими словами, я пишу спецификацию, которая в представлении передает весь видимый текст через метод перевода.В тесте контроллера RSpec2 (с render_views), найдите экземпляр вида
Я ссылаюсь не на недостающие переводы, а на недостающие переводы (где в исходном коде отсутствует вызов метода #t или #translate).
Чтобы сделать это, я хочу заглушить метод перевода i18n (I18n # t).
Для этого, как мне найти экземпляр представления RSpec2? Этот экземпляр представления включает в себя модуль ActionView :: Helpers :: TranslationHelper. Если бы я мог получить доступ к этому объекту представления, я мог (я думаю) заглушить его метод перевода. Кстати, я думаю, что я должен начать с @controller.
Все остальное в спецификации работает обычным способом (в том числе с ошибкой), кроме поиска и удаления метода перевода перевода, #t. Я использую render_views.
Я попытался (по-разному) #helper, #translate и #view. Может, я что-то упустил?
Поиск в ObjectSpace (в моем тесте) для всех объектов с методом #translate, я смог захватить объект, потому что его класс I18n :: Backend :: Simple. Так что моя спецификация работает, но было бы намного быстрее, если бы код не должен был искать ObjectSpace для него!
В качестве фона, пожалуй, самым простым планом тестирования, как представляется, является цикл действий для каждого контроллера, в тесте RSpec-контроллера и поиск видимых алфавитных символов. Во-первых, можно было бы заглушить помощник перевода Rails, чтобы вернуть пустые строки. Кроме того, можно было бы удалить имена тегов, а также любые теги сценариев и стиля.
Мой Gemfile включает водосвинка 1.1.4, капибары-WebKit 0.12.1, factory_girl 4.1.0, factory_girl_rails 4.1.0, рельсы 3.2.9, RSpec 2.12.0, RSpec рельсы 2.12.0.