Pregunta

Quiero cambiar una aplicación Rails existente de RSPEC a Minitest, comenzando con los modelos. Por eso creé una carpeta test. Por ahí creé un archivo llamado minitest_helper.rb Con el siguiente contenido:

require "minitest/autorun"

ENV["RAILS_ENV"] = "test"

y la carpeta models que contiene forum_spec.rb:

require "minitest_helper"

describe "one is really one" do
  before do
    @one = 1
  end

  it "must be one" do
    @one.must_equal 1
  end
end

Ahora puedo correr ruby -Itest test/models/forum_spec.rb Con el siguiente resultado:

Loaded suite test/models/forum_spec
Started
.
Finished in 0.000553 seconds.

1 tests, 1 assertions, 0 failures, 0 errors, 0 skips

Test run options: --seed 12523

Qué lindo. Pero ahora quiero que se cargue el entorno y agrego la siguiente línea a minitest_helper.rb (copiado del archivo equivalente de RSPEC):

require File.expand_path("../../config/environment", __FILE__)

Ahora lo ejecuto nuevamente con el siguiente resultado:

Loaded suite test/models/forum_spec
Started

Finished in 0.001257 seconds.

0 tests, 0 assertions, 0 failures, 0 errors, 0 skips

Test run options: --seed 57545

Las pruebas y afirmaciones se han ido. Cuál podría ser la razón para eso?

Información del sistema:

  • Ruby 1.9.2p180 (2011-02-18 Revisión 30909) [x86_64-darwin10.8.0
  • Rails 3.1.0.RC4
¿Fue útil?

Solución

Dado que está cambiando la aplicación de RSPEC, probablemente tenga GEM RSPEC en el entorno de prueba especificada en Gemfile, algo así como:

group :test do
  gem 'rspec'
end

Cuando carga el entorno de 'prueba' con ENV["RAILS_ENV"] = "test", está cargando el RSPEC, que define su propio describe método y anula el definido por Minitest.

Por lo tanto, hay 2 soluciones aquí: 1. Elimine la gema RSPEC del entorno de prueba 2. Si aún desea ejecutar RSPEC mientras cambia a Minitest, puede dejar el entorno de 'prueba' solo y definir otro entorno de prueba específicamente para Minitest. Llamemos a Minitest: copie la configuración/entorno/test.rb a config/entirriroment/minitest.rb, defina la base de datos para el entorno Minitest y actualice Minitest_helper para configurar Rails_env en 'Minitest':

$ cp config/environments/test.rb config/environments/minitest.rb

(Una porción de) config/database.yml:

minitest:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

test/minitest_helper.rb:

ENV["RAILS_ENV"] = "minitest"
require File.expand_path("../../config/environment", __FILE__)
require "minitest/autorun"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top