Tengo una prueba RSpec para una clase en /lib/classes
que necesita acceso a un archivo zip (sin carga). El archivo está almacenado en /spec/fixtures/files/test.zip
. ¿Cómo ingreso la ruta correcta para que su entorno sea independiente, es decir, sin una ruta absoluta?Ruta relativa del archivo en RSpec
Respuesta
Hasta donde yo sé (por cada mes o dos) no hay mejor forma de construir algo en spec_helper
que use el valor __FILE__
para tomar el camino a un poco de contenido, luego construya sus propios ayudantes en la parte superior de eso.
Obviamente puede utilizar una ruta relativa a __FILE__
en el archivo individual *_spec.rb
también.
Rails.root
le dará la raíz aplicación, por lo
Rails.root.join "spec/fixtures/files/test.zip"
le dará la ruta absoluta del archivo, agnóstico de la ubicación de la aplicación en su disco duro.
Con rspec-rails, puede acceder a los dispositivos fácilmente como se describe aquí: https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/archivo-accesorio – thisismydesign
me he abordado este tema recientemente y esto es lo que ocurrió:
definir una constante en su spec_helper.rb
(o equivalente) que apunta a RSpec raíz:
RSPEC_ROOT = File.dirname __FILE__
Esta variable se utiliza en su *_spec.rb
(o equivalentes) ficheros de prueba:
require 'spec_helper'
File.open("#{RSPEC_ROOT}/resources/example_data.json")
Por qué esta solución?
- No hace uso de la ubicación del archivo de prueba que puede ser sujetos a cambio (spec_helper es probable que no)
- No se requieren más adiciones para probar archivos distintos a los ya existentes
require 'spec_helper'
- no depende de rieles (a diferencia de
Rails.root
)
Aquí hay una Gist: https://gist.github.com/thisismydesign/9dc142f89b82a07e413a45a5d2983b07
- 1. ¿Qué significan los puntos en la ruta relativa del archivo?
- 2. ¿Ruta relativa en t sql?
- 3. Streamreader a una ruta de archivo relativa
- 4. Ruta de archivo absoluta a URL relativa
- 5. ruta relativa usando C#
- 6. Ruta relativa a un archivo con C#
- 7. problema con la ruta de archivo relativa
- 8. Ruta relativa de ASP.NET
- 9. Ruta absoluta y ruta relativa
- 10. Ruta relativa de App.config
- 11. Mover un archivo en MSBuild usando la ruta relativa
- 12. ¿Cómo obtener la ruta absoluta del archivo desde la ruta base y relativa que contiene ".."?
- 13. Combinar relativeUri relativa con ruta relativa
- 14. Ruta relativa utilizando Uri
- 15. ruta absoluta relativa perl
- 16. Hacer una ruta relativa en el archivo por lotes
- 17. ¿Cómo abrir un archivo en una ruta relativa usando T4?
- 18. recurso abierto con ruta relativa en Java
- 19. Ruta relativa a la ruta absoluta en C#?
- 20. Ruta relativa a la ruta absoluta en Elisp
- 21. ¿Cómo uso una ruta relativa en XDocument.Load?
- 22. Ruta relativa para compilación en .NET
- 23. Mercurial subrepo y ruta relativa
- 24. Vinculación usando ruta relativa en GITHUB README.md
- 25. Referencia de ruta relativa en WebConfig.ConnectionString
- 26. Obtener ruta URL relativa en CSS Javascript
- 27. Problemas ruta relativa en Javascript Ajax llamar
- 28. hacer una ruta de archivo "siempre relativa al módulo actual"?
- 29. silverlight ... hyperlinkbutton a archivo usando la ruta relativa
- 30. Copie un archivo que incluya su ruta relativa
Para otros con el mismo problema: dado que mi especificación reside en/spec/classes, terminé con: 'File.dirname (__ FILE__) + '/../ fixtures/files/test.zip'' – wintersolutions
Esto funciona bien, pero podría ser un poco frágil en caso de que reorganice sus especificaciones. Por supuesto, no debe suponerse que utiliza Rails, pero si tiene acceso al directorio raíz de proyectos (Rails.root, Sinatra :: Application.root), esta podría ser, o no, una alternativa más estable. – lab419
para hacer que esto funcione en todas las plataformas, no incruste '/' en una cadena, en su lugar use: File.join (File.dirname (__ FILE__), '..', 'fixtures', 'files', 'test. zip ') – Ultrasaurus