开发者

Testing view helpers

开发者 https://www.devze.com 2023-01-12 21:45 出处:网络
I\'m currently working on a Rails plugin used for generating iPhone specific HTML meta-tags. I\'m trying to use ActionView::TestCase for unit tests but keep getting the same error. See file contents a

I'm currently working on a Rails plugin used for generating iPhone specific HTML meta-tags. I'm trying to use ActionView::TestCase for unit tests but keep getting the same error. See file contents and error below. Any ideas o开发者_运维知识库r help would be much appreciated.

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

error

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


Awful and hacky workaround that worked for me (since I am working on a gem and not in a full rails environment):

require 'ostruct'

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


Did you try to include the respective Module in an old-fashioned way?:

include ActionDispatch::Routing::RouteSet

If a NameError is raised telling you that ActionDispatch is unknown you might have to require 'action_dispatch'.


Maybe a stupid question, but is the fact that the class name and the file name don't match possibly a problem (IphoneHelperTest vs. iphone_test_helper.rb)? Sometimes that leads to classes not being loaded.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号