Prueba de rutas de rieles: no se pueden encontrar los métodos ActionController :: Assertions :: RoutingAssertions

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

Pregunta

Estoy intentando probar las rutas en mi aplicación de rieles 2.3.4. Hay varios sitios que explican cómo probar rutas, incluida la documentación de Rails, pero recibo errores siguiendo las instrucciones.

Primero, asumo que estas pruebas se pueden realizar en archivos de prueba de unidad relacionados. Parece que no hay lugar más obvio, y ninguno de los documentos especifican.

Dicho esto, esta es una versión condensada 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

rake test: units falla con el error:

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

En la API de Rails vi que assert_routing está definido en ActionController :: Assertions :: RoutingAssertions , por lo que intenté incluir ese módulo, solo para que falle en otro lugar.

Observe la línea include comentada en el ejemplo de código anterior.

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

clean_backtrace es otro método de prueba definido en ActionController :: TestCase :: Assertions.

No obtengo ningún resultado de búsqueda de Google para estos errores, nadie más parece tener este problema. El problema también ocurre si vuelvo a crear el escenario en una aplicación Rails recién generada. No creo que deba tener que incluir estos módulos en mis casos de prueba. ¿Qué podría estar mal aquí?

¿Fue útil?

Solución

Hay una lista de actualizando Rails gotchas en los robots gigantes. Aparentemente, su prueba de enrutamiento debe usar la clase ActionController :: TestCase , no ActiveSupport :: TestCase .

Otros consejos

Las pruebas de enrutamiento deben realizarse como parte de las pruebas de integración.

Se pueden generar utilizando script / generar script / generar integration_test rutas

Un ejemplo:

class RoutesTest < ActionController::IntegrationTest
  fixtures :all

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

El archivo de prueba de la unidad de enrutamiento debe incluir el módulo ActionController :: Assertions :: RoutingAssertions desde Rails 2.3.2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top