37 votos

Pruebas de Rails 3.1 montaje del motor con Rspec

Empecé a hacer una Rails 3.1 motor, y estoy teniendo un tiempo difícil pruebas de que el uso de rspec.

Primero de todo, si me quedo rails g integration_test whatever crea un regular la integración de prueba en las pruebas de integración en lugar de spec/peticiones (rspec-gema rails está instalado y se requiere como un desarrollo de la dependencia en el archivo gemspec)

También, cuando ejecuto una especificación de prueba me sale un error que dice la tabla correspondiente a la modelo que lo estoy probando no se ha creado. He intentado rake engine_name:install:migrations y en ejecución rake db:migrate desde el interior de la dummy de la aplicación, y me sale una "tabla ya existe" error.

Todo parece desconectado, siento que me estoy perdiendo algo aquí para hacer el rspec joya funcionan a la perfección como habitualmente lo hace con plena aplicaciones rails.

He seguido todos los cambios desde aquí http://rubyx.com/2011/03/01/start-your-engines y puedo probar el motor manualmente por el lanzamiento de la dummy de la aplicación a través de la consola como se muestra aquí http://railscasts.com/episodes/277-mountable-engines.

Es allí una manera de hacer rspec el valor predeterminado para las pruebas de rails 3.1 motor?

62voto

dwhite Puntos 1246

Estoy usando RSpec con Rails motor sin problemas.

He creado mi plugin con los siguientes modificadores: -T --full --prueba-path=spec/maniquí.

  • -T excluye test/unit
  • --full indica que el plugin es un motor de
  • --dummy-path es simplemente para que no conseguimos un directorio de prueba (la por defecto es de prueba/de prueba).

A partir de ahí he utilizado el spec_helper de la "start your engines" artículo:

# 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. Puedo agregar una configuración.generadores de bloque para mi motor.rb archivo así:

module MyEngine
  class Engine < Rails::Engine
    config.generators do |g|
      g.test_framework :rspec, :view_specs => false
    end
  end
end

Con eso, soy capaz de conseguir rspec pruebas cuando se ejecuta un generador como el modelo del generador.

Como para la DB, es su base de datos.yml archivo configurado correctamente? ¿La prueba de carga de medio ambiente, por ejemplo rake db:test:clone o rake db:migrate RAILS_ENV=test? Mi conjetura es que RSpec no puede ver las tablas debido a que no existe una base de datos de prueba establecido.

9voto

Fabio Puntos 8145

Yo estaba buscando la misma respuesta, y me encontré con la combustión de la gema* la promesa que para la instalación de un completo entorno de las especificaciones ing de su motor en una forma más simple. Acaba de agregar

gem.add_development_dependency 'combustion', '~> 0.3.1'

a su gemspec y ejecutar

bundle exec combust

para reproducir una aplicación rails completa en su spec.

*Yo no lo he probado todavía...

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X