2010-08-23 7 views
13

Ich arbeite gerade an einem Rails-Plugin, das zum Generieren von iPhone-spezifischen HTML-Meta-Tags verwendet wird. Ich versuche, ActionView :: TestCase für Komponententests zu verwenden, bekomme aber immer den gleichen Fehler. Siehe Dateiinhalt und Fehler unten. Irgendwelche Ideen oder Hilfe würden sehr geschätzt.Testen von Ansichtshelfern

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 

Fehler

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

OK, das könnte eine dumme Frage sein, ist wahrscheinlich, aber haben Sie versucht, die Include-Zeile hinzufügen, die es in der Fehlermeldung gibt? – jasonpgignac

+0

Ja Ich habe versucht, die Zeile hinzufügen, die mir einen weiteren Fehler gab 'uninitialized constant IphoneHelperTest :: Rails' –

+0

Ok, nur Raten, aber vielleicht muss die URL_Helpers Linie in Test-Helfer statt der einzelnen Testfall enthalten sein? –

Antwort

4

schrecklich und h acky Abhilfe, die für mich gearbeitet (da ich auf einem Juwel und nicht in einer vollen Schiene Umgebung arbeite):

require 'ostruct' 

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

Haben Sie versucht, the respective Module in einer altmodischen Art und Weise schließen ?:

include ActionDispatch::Routing::RouteSet 

Wenn eine NameError ausgelöst wird, die Ihnen mitteilt, dass ActionDispatch unbekannt ist, müssen Sie möglicherweise require 'action_dispatch'.

0

Vielleicht eine dumme Frage, aber ist die Tatsache, dass der Klassenname und der Dateiname möglicherweise nicht übereinstimmen ein Problem (IphoneHelperTest vs. iphone_test_helper.rb)? Manchmal führt dies dazu, dass Klassen nicht geladen werden.