Test dei percorsi delle rotaie: impossibile trovare i metodi ActionController :: Assertions :: RoutingAssertions

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

Domanda

Sto provando a testare i percorsi sulla mia applicazione 2.3.4. Esistono diversi siti che spiegano come testare i percorsi, compresi i documenti di rotaie, ma ricevo errori seguendo le istruzioni.

In primo luogo, presumo che questi test possano essere eseguiti in file di test unitari correlati. Sembra che non ci sia posto più ovvio e nessuno dei documenti specifica.

Detto questo, questa è una versione ridotta di 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 del rake: unità non riuscito con errore:

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

Ho visto nell'API di Rails che assert_routing è definito in ActionController :: Assertions :: RoutingAssertions , quindi ho provato a includere quel modulo, solo per farlo fallire altrove.

Nota la riga commentata include nell'esempio di codice sopra.

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

clean_backtrace è un altro metodo di test definito in ActionController :: TestCase :: Assertions.

Non sto ottenendo risultati di ricerca su Google per questi errori - nessun altro sembra avere questo problema. Il problema si verifica anche se ricrea lo scenario in un'app Rails appena generata. Non penso che dovrei includere questi moduli nei miei casi di test. Cosa potrebbe esserci di sbagliato qui?

È stato utile?

Soluzione

C'è un elenco di upgrade di Rails gotchas su robot giganti. Apparentemente il tuo test di routing dovrebbe usare la classe ActionController :: TestCase , non ActiveSupport :: TestCase .

Altri suggerimenti

I test di routing devono essere eseguiti come parte dei test di integrazione.

Questi possono essere generati usando script / generate script / generate route_test di integrazione

Un esempio:

class RoutesTest < ActionController::IntegrationTest
  fixtures :all

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

Il file di test dell'unità di routing deve includere il modulo ActionController :: Assertions :: RoutingAssertions da Rails 2.3.2.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top