2010-08-23 13 views
13

Actualmente estoy trabajando en un plugin de Rails utilizado para generar metaetiquetas HTML específicas para iPhone. Intento utilizar ActionView :: TestCase para pruebas unitarias, pero sigo recibiendo el mismo error. Vea el contenido del archivo y el error a continuación. Cualquier idea o ayuda sería muy apreciada.Testing helpers

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 
+0

Bien, esta podría ser una pregunta estúpida, probablemente lo sea, pero ¿intentó agregar la línea de inclusión que aparece en el mensaje de error? – jasonpgignac

+0

Sí, he intentado agregar la línea que me dio otro error 'Constante no inicializada IphoneHelperTest :: Rails' –

+0

Ok, supongo, pero tal vez la línea url_helpers debe incluirse en Test-helper en lugar de en el caso de prueba individual. –

Respuesta

4

horrible y h acky solución que trabajó para mí (ya que estoy trabajando en una joya y no en un entorno rieles completo):

require 'ostruct' 

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

¿trató de incluir the respective Module en una antigua usanza ?:

include ActionDispatch::Routing::RouteSet 

Si se genera un NameError indicándole que ActionDispatch es desconocido, es posible que tenga que require 'action_dispatch'.

0

Tal vez una pregunta estúpida, pero es el hecho de que el nombre de la clase y el nombre del archivo no coinciden con un problema (IphoneHelperTest vs. iphone_test_helper.rb)? A veces eso lleva a que las clases no se carguen.