Tengo un modelo que obtiene sus datos de un objeto analizador. Estoy pensando que la clase de analizador debería vivir en el directorio lib/(aunque podría persuadirse de que debería vivir en otro lugar). La pregunta es: ¿dónde deberían estar las pruebas de mi unidad para la clase de analizador? ¿Y cómo me aseguro de que se ejecuten cada vez que ejecuto la prueba de rake?Rieles: ¿Cómo probar el código en el directorio lib /?
Respuesta
En la aplicación Rails en la que estoy trabajando, decidí simplemente colocar las pruebas en el directorio test\unit
. También se anidan ellos por el módulo/directorio, así, por ejemplo:
lib/a.rb => test/unit/a_test.rb
lib/b/c.rb => test/unit/b/c_test.rb
Para mí, este fue el camino de la última resistencia, ya que estas pruebas corrieron sin tener que hacer ningún otro cambio.
Aquí hay una manera:
Crear lib/tasks/test_lib_dir.rake
con la siguiente
namespace :test do
desc "Test lib source"
Rake::TestTask.new(:lib) do |t|
t.libs << "test"
t.pattern = 'test/lib/**/*_test.rb'
t.verbose = true
end
end
imitan la estructura de su directorio lib
bajo la test
dir, en sustitución de código lib con las pruebas correspondientes.
Ejecute rake test:lib
para ejecutar sus pruebas de lib.
Si desea que se ejecuten todas las pruebas al invocar rake test
, puede agregar lo siguiente a su nuevo archivo de rake.
lib_task = Rake::Task["test:lib"]
test_task = Rake::Task[:test]
test_task.enhance { lib_task.invoke }
De alguna manera no carga el entorno (específicamente 'accesorios 'de ActiveSupport'), y no hay forma de forzarlo en rakefile. –
Oye, probé tu solución y 'rake test: lib' ejecuta mi prueba, pero' rake test' no. Lo copié al pie de la letra. Aquí hay un enlace al contenido de mi archivo: http://pastebin.com/FHMXU6vG ¡Gracias de antemano! – robert
yo estaba buscando para hacer lo mismo pero con rspec & Autospec y se tomó un poco de investigación para averiguar dónde estaban recibiendo la lista de patrones de directorios/archivos que dictaron que los archivos de prueba para correr. En última instancia, encontré esto en lib/tareas/rspec.rake: 86
[:models, :controllers, :views, :helpers, :lib, :integration].each do |sub|
desc "Run the code examples in spec/#{sub}"
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
end
end
había colocado mis pruebas en un nuevo directorio spec/libs cuando el archivo rpsec.rake fue configurado para buscar en la especificación/lib. Simplemente renombrar libs -> lib hizo el truco!
Tengo '/ lib' de forma predeterminada en mi proyecto de alguna manera. Desafortunadamente 'rake test' no pone al día los archivos, por lo tanto, esto es solo RSpec y tengo que usar la solución anterior. –
Para no definir tareas adicionales de rake para ejecutar pruebas desde las carpetas definidas personalizadas, también puede ejecutarlas con el comando rake test:all
. La estructura de las carpetas de prueba para la carpeta lib
o cualquier otra carpeta personalizada depende de usted. Pero prefiero duplicarlos en las clases: lib
se corresponde con test/lib
, app/form_objects
a test/form_objects
.
Una manera fácil y limpia es simplemente crear un directorio bajo prueba/unidad/lib. A continuación, cree la prueba como test/unit/lib/foo_test.rb correspondiente a lib/foo.rb. No se requieren nuevas tareas de rake, y puede anidar más directorios si es necesario para que coincida con la estructura del directorio lib.
Uso:
[spring] rake test:all
a ejecutar todas las pruebas, incluyendo los directorios que ha creado (como [root]/test/lib/
).
Omitir [spring]
si tou no lo está utilizando.
¡rake abortado! No sé cómo compilar la tarea 'test: all' – Intentss
Como de Rails 4.0:
rake test:all # Run all tests in any subdir of `test` without resetting the DB
rake test:all:db # Same as above and resets the DB
Como de Rails 4.1, redefinir test:run
a incluir tareas adicionales cuando se ejecuta rake
o rake test
:
# lib/tasks/test.rake
namespace :test do
Rake::Task["run"].clear
task run: ["test:units", "test:functionals", "test:generators", "test:integration", "test:tasks"]
["tasks"].each do |name|
Rails::TestTask.new(name => "test:prepare") do |t|
t.pattern = "test/#{name}/**/*_test.rb"
end
end
end
Esto tiene la ventaja añadida de definir rake test:tasks
en el ejemplo dado .
A partir de Rails 4.2, test:run
incluye todos los subdirectorios de test
incluyendo ellas cuando se ejecuta rake test
, y por lo tanto rake
.
En Rails 5, estas tareas diferentes ya no existen. – Qqwy
- 1. Rieles: ¿Está registrando el código en el directorio lib?
- 2. Acceso al módulo en el directorio lib (Ruby on rails)
- 3. rieles lib incluye
- 4. Cómo probar el código C
- 5. ¿Cómo probar el código fácilmente?
- 6. ¿Cómo cambio el dominio predeterminado "www.example.com" para probar en rieles?
- 7. Rieles: ¿cómo probar state_machine?
- 8. ¿Dónde rspec prueba el código en lib/go?
- 9. ¿Cómo probar si el directorio está oculto en C#?
- 10. Rieles Motores: Al poner el código en la aplicación, cuando en lib, y cuando en la carpeta de proveedor?
- 11. ¿Cómo probar atributos anidados en rieles?
- 12. ¿Cómo hacer que Maven copie el archivo de recursos en el directorio WEB-INF/lib?
- 13. Rieles: Probar producción
- 14. Rieles: Cómo probar subdominios con RSpec
- 15. ¿Cómo puedo probar el código jdbc en java?
- 16. Cómo embellecer el código xml en la aplicación de rieles
- 17. Rieles: ¿Cuándo un modelo? Cuando una lib?
- 18. ¿Cómo configurar el directorio de datos nltk desde el código?
- 19. ¿Cómo realizo el código en lib/recarga automáticamente cuando cambia el archivo?
- 20. No se encontró el archivo Grails JAR en el directorio lib
- 21. Cómo probar el código de unidad que usa HostingEnvironment.MapPath
- 22. ¿Cómo puedo probar el código del socket con PHPUnit?
- 23. Cómo probar el código sincronizado de la unidad
- 24. Cómo probar el código de unidad con muy pocas unidades
- 25. ¿Cómo puedo probar el código que nunca se debe ejecutar?
- 26. ¿Cómo usar un método de ayuda de ruta desde un archivo en el directorio lib?
- 27. archivo 'lib' no encontrado al instalar rieles
- 28. ¿Cómo puedo "usar lib" el directorio apropiado dependiendo de la ubicación de instalación?
- 29. Actualización a Rails 3.2.2: ¿Cómo mover correctamente mi complemento desde el directorio '/ vendor' a '/ lib'?
- 30. ¿Mi código impide el cruce del directorio?
Esto ya no funciona con Rails 5 – Qqwy