Тестирование помощников просмотра

В настоящее время я работаю над плагином Rails, используемым для создания метатег файлов, специфичных для iPhone. Я пытаюсь использовать ActionView:: TestCase для модульных тестов, но продолжаю получать ту же ошибку. См. Содержимое файла и ошибку ниже. Любые идеи или помощь будут высоко оценены.

test_helper.rb

require 'rubygems'
require 'test/unit'
require 'active_support'
require 'action_view'
require File.join(File.dirname(__FILE__), '..', 'lib', 'iphone_helper')

iphone_test_helper.rb

require 'test_helper'

class IphoneHelperTest < ActionView::TestCase
  test 'br' do
    tag = tag('br')
    assert_tag_in tag, '<br />'
  end
end

Ошибка

RuntimeError: In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers

Ответы

Ответ 1

Ужасное и хакерское обходное решение, которое сработало для меня (поскольку я работаю над драгоценным камнем, а не в полной среде с рельсами):

require 'ostruct'

module ActionController::UrlFor
  def _routes
    helpers = OpenStruct.new
    helpers.url_helpers = Module.new
    helpers
  end
end

Ответ 2

Вы пытались включить соответствующий модуль по-старому?:

include ActionDispatch::Routing::RouteSet

Если появляется a NameError, сообщая вам, что ActionDispatch неизвестно, вам может понадобиться require 'action_dispatch'.

Ответ 3

Может быть, глупый вопрос, но факт, что имя класса и имя файла не соответствуют возможностям (IphoneHelperTest vs. iphone_test_helper.rb)? Иногда это приводит к тому, что классы не загружаются.