我目前正在开发用于生成iPhone特定HTML元标记的Rails插件。我正在尝试使用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
答案 0 :(得分:4)
对我有用的糟糕和hacky解决方法(因为我正在开发gem而不是完整的rails环境):
require 'ostruct'
module ActionController::UrlFor
def _routes
helpers = OpenStruct.new
helpers.url_helpers = Module.new
helpers
end
end
答案 1 :(得分:1)
您是否尝试以传统方式加入the respective Module?:
include ActionDispatch::Routing::RouteSet
如果引发NameError
告诉您ActionDispatch未知,则可能需要require 'action_dispatch'
。
答案 2 :(得分:0)
也许是一个愚蠢的问题,但是类名和文件名不匹配可能是一个问题(IphoneHelperTest与iphone_test_helper.rb)?有时会导致课程没有被加载。