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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top