ruby - matchers - Cómo cargar un spec_helper.rb automáticamente en RSpec 2
rspec rails (2)
En RSpec 2, la carpeta /spec
siempre está automáticamente en su ruta de carga. Esto significa que todo lo que necesita es:
require ''spec_helper''
en la parte superior de tus archivos de especificaciones. Esto siempre cargará /spec/spec_helper.rb
, y es el mínimo con el que podrá salirse con la suya.
Esto significa que no necesita un enfoque horrible como:
require File.join(File.dirname(File.dirname(__FILE__)), ''spec_helper.rb'')
(que debe actualizarse para diferentes niveles de anidamiento).
También puede agregar a su archivo .rspec
la opción: --require spec_helper
, que requerirá este archivo en cada archivo de especificación, sin la declaración de requerimiento manual en la parte superior.
Al desarrollar gemas en Ruby, casi siempre necesito un archivo en el que pueda configurar RSpec para mis necesidades y tal vez antes de hacerlo, requiera algunos módulos auxiliares que deberían estar disponibles en todos mis ejemplos de spec
.
En las aplicaciones de Rails se usa un archivo llamado spec/spec_helper.rb
para eso. Una cosa que me molesta es que en el entorno típico de Rails, debe solicitar este archivo spec_helper.rb en cada archivo que contenga ejemplos para que se cargue. En el pasado tuve muchos problemas con esto relacionado con las rutas de carga cambiantes y las rutas de acceso relativas dentro de los archivos de ejemplo.
Ahora, para mis gemas, me gustaría tener una forma de decir RSpec para requerir el archivo spec_helper.rb antes de cargar cualquiera de los archivos de ejemplos. Independientemente del hecho si llamo rspec ejecutable, o la tarea de especificación de rake que puedo definir en mi Rakefile.
Sé que puedo decirle a RSpec que solo la ubicación de mi spec_helper.rb es que este spec_helper.rb requiere todos los archivos de ejemplo manualmente, pero también me gustaría evitar el mantenimiento adicional de ese enfoque.
¿Hay alguna manera más agradable de lograr esto?
La línea --require spec_helper
se agrega automáticamente al archivo .rspec para RSpec 3.0 cuando haces rspec --init
.