Testing Schienen Routen: nicht Action finden :: Assertions :: RoutingAssertions Methoden
-
05-07-2019 - |
Frage
Ich versuche, die Routen auf meinen Schienen 2.3.4 Anwendung zu testen. Es gibt mehrere Websites, die erklären, wie Routen zu testen, einschließlich der Schienen docs, aber ich bin immer Fehler folgen Sie den Anweisungen.
Als erstes gehe ich davon aus, dass diese Tests in der entsprechenden Einheit Testdateien durchgeführt werden kann. Es scheint kein offensichtlicher Ort zu sein, und keines der Dokumente angeben.
Das heißt, das ist eine verkürzte Version von test/unit/TitlesTest.rb
require File.dirname(__FILE__) + '/../test_helper'
class TitleTest < Test::Unit::TestCase
# include ActionController::Assertions::RoutingAssertions
def test_routes
assert_routing "games", { :controller => "titles", :section => "games", :action => "index", :id => nil }
end
end
rake test:units
schlägt mit dem Fehler:
NoMethodError: undefined method `assert_routing' for #<TitleTest:0x7f387232ec98>
/test/unit/title_test.rb:7:in `test_routes'
ich in dem Rails-API sah, die in ActionController::Assertions::RoutingAssertions
definiert ist assert_routing, so habe ich versucht, das Modul zu schließen, nur um ihn an anderer Stelle versagen.
Beachten Sie die kommentierten include
Zeile im Codebeispiel oben.
NoMethodError: undefined method `clean_backtrace' for #<TitleTest:0x7fd895fadf00>
/test/unit/title_test.rb:7:in `test_routes'
clean_backtrace
ist ein weiteres Testverfahren definiert in Action :: Testcase :: Assertions.
Ich bin keine Google-Suchergebnisse für diese Fehler bekommen - niemand anderes scheint dieses Problem zu haben. Das Problem tritt auch auf, wenn ich das Szenario in einer frisch erzeugten Rails-Anwendung neu erstellen. Ich glaube nicht, dass ich diese Module in meinem Testfälle enthalten sein müssen. Was könnte hier falsch sein?
Lösung
Es gibt eine Liste von Upgrade gotchas Schienen auf riesigen Roboter. Anscheinend Ihr Routing-Test verwendet Klasse ActionController::TestCase
sollte, nicht ActiveSupport::TestCase
.
Andere Tipps
Routing Tests sollten im Rahmen der Integrationstests durchgeführt werden.
Diese können erzeugt werden unter Verwendung von script/generate script/generate integration_test routes
Ein Beispiel:
class RoutesTest < ActionController::IntegrationTest
fixtures :all
def test_resources_route
assert_routing "titles/15", { :controller => "titles", :action => "show", :id => "15" }
end
end
Ihre Routing-Einheit Testdatei hat den ActionController::Assertions::RoutingAssertions
Modul seit Rails 2.3.2 enthalten.