ruby-on-rails - matchers - rspec documentation
Rails 3.1 plugin gem, aplicaciĆ³n de prueba ficticia, rspec (2)
Cree el complemento sin unidad de prueba y especifique la ruta para la aplicación ficticia:
rails plugin new foobar --skip-test-unit --dummy-path=spec/dummy
Agregue rspec-rails como una dependencia de desarrollo al archivo foobar.gemspec
( foobar.gemspec
):
Gem::Specification.new do |s|
.
.
.
s.add_development_dependency "rspec-rails"
end
Ejecutar la bundle install
Cree un enlace simbólico desde la aplicación ficticia al directorio de especificaciones del complemento y ejecute el generador de instalación Rspec:
cd spec/dummy
ln -s ../../spec
rails generate rspec:install
cd -
Ahora edite spec/spec_helper.rb
(o spec/rails_helper.rb
en rieles 4+, no estoy seguro acerca de las versiones anteriores) cambiando esta línea (línea 3):
require File.expand_path("../../config/environment", __FILE__)
A esto:
require File.expand_path("../dummy/config/environment", __FILE__)
Ahora puede ejecutar Rspec desde la raíz de su complemento y también obtendrá las especificaciones de la aplicación ficticia.
bundle exec rspec spec
Escribí sobre esto con más detalle, mostrando cómo configurar también capibara, spork y guard en un plugin Rails con una aplicación ficticia:
So Rails 3.1 viene con un generador práctico y poco conocido "rails g plugin new", que le ofrece un esqueleto adecuado para un complemento de gemas de rieles. [http://guides.rubyonrails.org/plugins.html#or-generate-a-gemified-plugin]
Una de las cosas útiles que esto hace, es configurar las cosas convenientemente para probar con Test :: Unit. Te proporciona una aplicación ficticia básica de Rails con la que se pueden ejecutar tus pruebas en el contexto de, para probar el comportamiento del "motor" que solo funciona en la copia de una aplicación Rails. (lo pone en ./test/dummy). Pero tus pruebas todavía están en my_gem / test, las pruebas no viven en la aplicación ficticia. Y my_gem / test / test_helper.rb está allí, escrito de manera que las pruebas se ejecutarán en el contexto de la aplicación ficticia, iniciada en ../dummy/config/environment.
Lo describo porque creo que mucha gente no sabe acerca de este nuevo generador, que configura las cosas muy bien.
Pero mi pregunta es, ¿alguien ha descubierto cómo hacer esto con rspec en su lugar? Intenté seguir los mismos principios DIY para configurar cosas así para rspec en una joya de plugins de rieles, pero me estoy tropezando con varios obstáculos confusos, y espero que alguien más ya se haya dado cuenta (o esté interesado en imaginarlo para el resto de nosotros, heh).
Simplemente ejecute el rails plugin new <gemname>
y luego agregue rspec como development_dependency al archivo gemspec, e instálelo rspec --init
.
Ahora mueva la subcarpeta ficticia de la test
a la spec
y agréguelos a spec_helper
:
ENV["RAILS_ENV"] = "test"
require File.expand_path("../dummy/config/environment.rb", __FILE__)
require "rails/test_help"
require ''<gemname>''
Rails.backtrace_cleaner.remove_silencers!
como están en test_helper
!