2012-09-23 16 views
6

estoy probando Minitest :: Spec como una alternativa a RSpec, pero tengo un problema molesto que no puedo detectar la respuesta a:Minitest, requieren 'minitest_helper' error de carga

I He configurado algunas especificaciones básicas en spec/models/*_spec.rb. Mi carriles de aplicación incluye minitest-rails, y he configurado mi Rakefile de la siguiente manera:

Rake::TestTask.new do |t| 
    t.libs.push "lib" 
    t.test_files = FileList['spec/**/*_spec.rb'] 
    t.verbose = true 
end 
task :default => :test 

Ahora, si escribo mis archivos de especificaciones de esta manera:

require 'minitest_helper' 

describe User do 
    ... 
end 

... rake test y correr, lo entiendo : sin embargo

user_spec.rb:1:in `require': cannot load such file -- minitest_helper (LoadError) 

, si cambio de la línea de

require_relative '../minitest_helper' 
requerir

Entonces funciona. Por lo tanto, esto es funcional, pero parece que todos los ejemplos de personas que usan especificaciones minitest que encuentro en línea los llama simplemente al require 'minitest_helper', no al require_relative. Entonces, ¿qué me estoy perdiendo que permita que funcione para otros pero no en mi situación?

Una última pieza de información, mi archivo de ayuda se ve así:

# spec/minitest_helper.rb 
ENV["RAILS_ENV"] = "test" 
require File.expand_path('../../config/environment', __FILE__) 

require "minitest/autorun" 
require "minitest/rails" 

# Uncomment if you want Capybara in accceptance/integration tests 
# require "minitest/rails/capybara" 

# Uncomment if you want awesome colorful output 
# require "minitest/pride" 

class MiniTest::Rails::ActiveSupport::TestCase 
    # Add more helper methods to be used by all tests here... 
end 

No es nada especial. ¡Gracias por la ayuda!

Respuesta

7

Sus pruebas no están encontrando el archivo auxiliar porque no le ha indicado a sus pruebas que miren dónde están. intente cambiar su tarea de rake a este:

Rake::TestTask.new do |t| 
    t.libs << "lib" 
    t.libs << "spec" 
    t.test_files = FileList['spec/**/*_spec.rb'] 
    t.verbose = true 
end 
task :default => :test 
+1

't.libs <<" spec "' por supuesto. Gracias. – Andrew

1

En Ruby 1.9, el directorio de trabajo es no incluido en la ruta de carga de Ruby. Se pueden añadir si lo desea:

$: << "." 

... o puede agregar cualquier otro directorio que desea require archivos de Rubí.

Si ver a otras personas con sólo escribir:

require 'minitest_helper' 

... entonces, sin duda, han hecho algo a su trayectoria de carga (o rieles/Rake lo ha hecho por ellos). Puedes probar p $: dentro de tu Rakefile para ver qué Rails/Rake hacen con la ruta de carga (en todo caso).

+0

¡Eso tiene sentido, gracias! – Andrew

+0

Tenga en cuenta que la ruta actual se eliminó de la búsqueda en 1.9.2 no sin motivos – UncleGene