Estoy trabajando en la escritura de pruebas de unidades simples para un proyecto de Rails 3, pero no puedo ejecutar ninguna prueba.Dado un entorno típico de Rails 3, ¿por qué no puedo ejecutar ninguna prueba?
El caso en cuestión, el intento de ejecutar la prueba de auto-generado por los carriles falla:
require 'test_helper'
class UserTest < ActiveSupport::TestCase
# Replace this with your real tests.
test "the truth" do
assert true
end
end
Resultados en el siguiente error:
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
test_helper (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from user_test.rb:1:in `<main>'
comentando la línea require 'test_helper' y que intentan para ejecutar los resultados de la prueba en este error:
user_test.rb:3:in `<main>': uninitialized constant Object::ActiveSupport (NameError)
Las gemas del paquete de acción aparecen t o estar debidamente instalado y hasta la fecha:
actionmailer (3.0.3, 2.3.5)
actionpack (3.0.3, 2.3.5)
activemodel (3.0.3)
activerecord (3.0.3, 2.3.5)
activeresource (3.0.3, 2.3.5)
activesupport (3.0.3, 2.3.5)
Ruby es en 1.9.2p0 y rieles está en 3.0.3.
El vertedero muestra de mi directorio de prueba es el siguiente:
/fixtures
/functional
/integration
/performance
/unit
-- /helpers
-- user_helper_test.rb
-- user_test.rb
test_helper.rb
nunca he visto este problema antes - Me he encontrado las tareas típicas del rastrillo para preparar el entorno de prueba. No tengo nada fuera de lo común en los archivos de configuración de mi aplicación o entorno, ni he instalado gemas inusuales que puedan interferir con el entorno de prueba.
edición de marzo de nono
Xavier Holt 's sugerencia, especificar explícitamente la ruta a la test_helper trabajado; sin embargo, esto reveló un problema con ActiveSupport.
Ahora cuando intento ejecutar la prueba, aparece el siguiente mensaje de error (como también se enumeran más arriba):
user_test.rb:3:in `<main>': uninitialized constant Object::ActiveSupport (NameError)
Pero como se puede ver arriba, Action Pack es todo instalado y la actualización hasta la fecha.
edición de marzo de 13ª
Al intentar ejecutar pruebas utilizando rake test:units
este seguimiento de pila se descarga en la consola:
test/unit/bookmark_test.rb:3:in `<top (required)>': uninitialized constant Objec
t::ActiveSupport (NameError)
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `load'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `block in <main>'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `<main>'
rake aborted!
Así que buscando en el archivo mencionado anteriormente, veo lo siguiente:
#!/usr/bin/env ruby
# Load the test files from the command line.
ARGV.each { |f| load f unless f =~ /^-/ }
Que yo sepa, todo se ve como se esperaba.
¿Podría enumerar los contenidos de su directorio 'test'? No es necesario enumerar * cada * prueba unitaria, etc., solo la descripción general (específicamente donde 'test_helper.rb' es). –
El mentor de My Rails me hizo cambiar todas las líneas 'require 'test_helper'' en mis pruebas para' requerir File.dirname (__ FILE__) +' /../ test_helper''. Si bien esto era para resolver un problema diferente (y sí, es feo como el infierno), sospecho que podría funcionar para usted. –
Eso funcionó, pero terminó revelando otro problema con ActiveSupport. Actualizando la pregunta. – Tom