Test des routes de rails: impossible de trouver les méthodes ActionController :: Assertions :: RoutingAssertions

StackOverflow https://stackoverflow.com/questions/1806351

Question

J'essaie de tester les itinéraires sur mon application rails 2.3.4. Plusieurs sites expliquent comment tester les itinéraires, y compris la documentation Rails, mais je reçois des erreurs en suivant les instructions.

Premièrement, je suppose que ces tests peuvent être effectués dans des fichiers de tests unitaires connexes. Il ne semble plus y avoir d’endroit évident, et aucun des documents n’indique.

Cela dit, il s'agit d'une version condensée de 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

test de rake: les unités échouent avec l'erreur suivante:

NoMethodError: undefined method `assert_routing' for #<TitleTest:0x7f387232ec98>
    /test/unit/title_test.rb:7:in `test_routes'

J'ai vu dans l'API Rails que assert_routing est défini dans ActionController :: Assertions :: RoutingAssertions . J'ai donc essayé d'inclure ce module, mais de le faire échouer ailleurs.

Notez la ligne include commentée dans l'exemple de code ci-dessus.

NoMethodError: undefined method `clean_backtrace' for #<TitleTest:0x7fd895fadf00>
    /test/unit/title_test.rb:7:in `test_routes'

clean_backtrace est une autre méthode de test définie dans ActionController :: TestCase :: Assertions.

Je ne reçois aucun résultat de recherche Google pour ces erreurs - personne ne semble avoir ce problème. Le problème se produit également si je recrée le scénario dans une application rails nouvellement générée. Je ne pense pas que je devrais avoir à inclure ces modules dans mes cas de test. Qu'est-ce qui ne va pas ici?

Était-ce utile?

La solution

Il existe une liste de mise à niveau des pièges Rails sur les robots géants. Apparemment, votre test de routage devrait utiliser la classe ActionController :: TestCase et non pas ActiveSupport :: TestCase .

Autres conseils

Les tests de routage doivent être effectués dans le cadre des tests d'intégration.

Celles-ci peuvent être générées à l'aide de routes / script / générer script / générer des tests d'intégration_test

.

Un exemple:

class RoutesTest < ActionController::IntegrationTest
  fixtures :all

  def test_resources_route
    assert_routing "titles/15", { :controller => "titles", :action => "show", :id => "15" }
  end
end

Votre fichier de test d'unité de routage doit inclure le module ActionController :: Assertions :: RoutingAssertions depuis Rails 2.3.2.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top