Pregunta

Para una organización más fácil, me gustaría el espacio de nombres un par de carpetas en mi directorio /especificaciones. Entonces, en lugar de /especificaciones /solicitudes, me gustaría usar /especificar /otro_directory/peticiones.

Sin embargo, cuando ejecuto mis especificaciones en estos nuevos directorios con un conjunto de nombres, obtengo

NoMethodError:
       undefined method `whatever_path'

Por lo tanto, se ve como aquellas mis rutas ya no se están cargando correctamente. Si muevo el archivo de nuevo a Spec/Solicitudes (sin el espacio de nombres), todo está bien y la prueba es verde.

No estoy realmente seguro de cuál es el problema. Requeriré 'spec_helper' en mis archivos. También he visto:

require File.dirname(__FILE__) + '/../../spec_helper'

Y sus variaciones, pero no estoy realmente seguro de cómo eso ayuda porque parece cargar el spec_helper, pero no las rutas. Y para hacer que las cosas sean más divertidas, estoy recargando las rutas antes de cada carrera en el bloque Spork.Pre_Fork

Spork.each_run do
  load "#{Rails.root}/config/routes.rb"
end

Pero todavía recibo el error si Spork está funcionando o no.

¿Qué estoy haciendo mal?

(Rspec-Rails 2.8.1)

¿Fue útil?

Solución

Creo que esto se debe Ejemplo de solicitud antes del gancho no se dispara. Si miras más lejos, puede entender cómo los rspec-rails deciden qué ejemplo se ejecuta.

Te sugiero que uses spec/requests/another_directory esquema o puede intentar reconfigurar rspec de algo así:

RSpec::configure do |config|
   config.include RSpec::Rails::RequestExampleGroup, :type => :request,
        :example_group => {:file_path => 'path/to/your/requests')}
end

Otros consejos

Terminé haciendo:

config.include RSpec::Rails::RequestExampleGroup, :type => :request, 
  :example_group => { 
  :file_path => config.escaped_path(%w[spec (my|folder|names) requests])}

Pero, entonces no está obteniendo los métodos de Capybara, por lo que incluyo nuevamente después del bloque de configuración anterior

config.include Capybara::DSL, :type => :request
config.include Capybara::RSpecMatchers, :type => :request

Quería hacer que el camino sea más elástico para no tener que incluir cada carpeta 'padre'. Intenté usar ** en lugar de tener que incluir (cada una carpeta), pero no se cargó. Luego intenté configurar la ruta directamente usando:

:file_path => "spec/../requests"

Pero luego pierdo la capacidad de ejecutar un solo archivo.

De cualquier manera, el código anterior funciona, solo tiene que abordar cada uno de los nombres de su carpeta.

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