ruby on rails - Testing Rails 3.1 motor montable con Rspec
rspec documentation (2)
Estaba buscando la misma respuesta y encontré la gema de combustión * que promete configurar un entorno completo para especificar su motor de una manera más simple. Solo agrega
gem.add_development_dependency ''combustion'', ''~> 0.3.1''
a su gemspec y ejecutar
bundle exec combust
para reproducir una aplicación de rieles completos en su directorio de especificaciones.
* No lo he intentado todavía ...
Empecé a hacer un motor Rails 3.1, y estoy teniendo dificultades para probarlo usando rspec.
En primer lugar, si ejecuto rails g integration_test whatever
que crea una prueba de integración regular en pruebas / integración en lugar de especificaciones / solicitudes (la gema rspec-rails está instalada y es necesaria como una dependencia de desarrollo en el archivo gemspec)
Además, cuando ejecuto una prueba de especificación, aparece un error que dice que la tabla correspondiente al modelo que estoy probando no se ha creado. Intenté rake engine_name:install:migrations
y ejecutar rake db:migrate
desde el interior de la aplicación ficticia, y rake engine_name:install:migrations
error "la tabla ya existe".
Todo parece desconectado, siento que me falta algo aquí para hacer que la gema rspec funcione sin problemas, como suele ocurrir con las aplicaciones de rieles completos.
Seguí todos los cambios desde aquí http://rubyx.com/2011/03/01/start-your-engines y puedo probar el motor manualmente al iniciar la aplicación ficticia a través de la consola, como se muestra aquí http://railscasts.com/episodes/277-mountable-engines .
¿Hay alguna manera de hacer que rspec sea el predeterminado para probar un motor Rails 3.1?
Estoy usando RSpec con un motor Rails sin problemas.
Creé mi complemento utilizando los siguientes modificadores: -T --full --dummy-path = spec / dummy.
-
-T
excluye prueba / unidad -
--full
indica que el complemento es un motor -
--dummy-path
es simplemente para que no obtengamos un directorio de prueba (el valor predeterminado es test / dummy).
A partir de ahí, utilicé el spec_helper del artículo "start your engines":
# Configure Rails Envinronment
ENV["RAILS_ENV"] = "test"
require File.expand_path("../dummy/config/environment.rb", __FILE__)
require ''rspec/rails''
ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), ''../'')
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[File.join(ENGINE_RAILS_ROOT, "spec/support/**/*.rb")].each {|f| require f }
RSpec.configure do |config|
config.use_transactional_fixtures = true
end
Para los generadores Agrego un bloque de config.generators a mi archivo engine.rb así:
module MyEngine
class Engine < Rails::Engine
config.generators do |g|
g.test_framework :rspec, :view_specs => false
end
end
end
Con eso, puedo obtener pruebas de rspec cuando ejecuto un generador como el generador de modelos.
En cuanto a la base de datos, ¿su archivo database.yml está configurado correctamente? ¿Cargó el entorno de prueba, por ejemplo, rake db:test:clone
or rake db:migrate RAILS_ENV=test
? Supongo que RSpec no puede ver sus tablas porque no hay una base de datos de prueba configurada.