Aquí hay una manera barata y fácil (aunque no se recomienda oficialmente):
Haga un directorio en la raíz de su gema llamado spec
, ponga sus especificaciones allí. Probablemente ya tenga instalado rspec, pero si no lo tiene, simplemente haga una gem install rspec
y olvide Gemfiles y bundler.
A continuación, hará una especificación y deberá decirle dónde está su aplicación, dónde están sus archivos e incluir el archivo que desea probar (junto con las dependencias que tenga):
# spec/awesome_gem/awesome.rb
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
$: << File.join(APP_ROOT, 'lib/awesome_gem') # so rspec knows where your file could be
require 'some_file_in_the_above_dir' # this loads the class you want to test
describe AwesomeGem::Awesome do
before do
@dog = AwesomeGem::Awesome.new(name: 'woofer!')
end
it 'should have a name' do
@dog.name.should eq 'woofer!'
end
context '#lick_things' do
it 'should return the dog\'s name in a string' do
@dog.lick_things.should include 'woofer!:'
end
end
end
Abra la Terminal y ejecute rspec:
~/awesome_gem $ rspec
..
Finished in 0.56 seconds
2 examples, 0 failures
Si quieres algunas .rspec
opciones amorosas, ve a hacer un .rspec
archivo y colócalo en la ruta raíz de tu gema. El mío se ve así:
# .rspec
--format documentation --color --debug --fail-fast
¡Fácil, rápido, ordenado!
Me gusta esto porque no tiene que agregar ninguna dependencia a su proyecto en absoluto, y todo sigue siendo muy rápido. bundle exec
ralentiza un poco las cosas, que es lo que tendría que hacer para asegurarse de que usa la misma versión de rspec todo el tiempo. Los 0,56 segundos que tardó en ejecutar dos pruebas estaban ocupados en un 99% cuando mi computadora tardó en cargar rspec. Ejecutar cientos de especificaciones debería ser extremadamente rápido. El único problema con el que podría toparse es que si cambia las versiones de rspec y la nueva versión no es compatible con alguna de las funciones que utilizó en su prueba, es posible que deba volver a escribir algunas pruebas.
Esto es bueno si está haciendo especificaciones únicas o tiene alguna buena razón para NO incluir rspec en su gemspec, sin embargo, no es muy bueno para permitir compartir o hacer cumplir la compatibilidad.