Начало работы с MiniTest и Rails - PullRequest
16 голосов
/ 24 июля 2011

Я хочу переключить существующее приложение rails с rspec на minitest, начиная с моделей.Поэтому я создал папку test.Внутри я создал файл с именем minitest_helper.rb со следующим содержимым:

require "minitest/autorun"

ENV["RAILS_ENV"] = "test"

и папкой models, содержащей 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

Теперь я могу запустить ruby -Itest test/models/forum_spec.rb со следующим результатом:

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

Это хорошо.Но теперь я хочу, чтобы среда была загружена, и добавляю следующую строку в minitest_helper.rb (скопирован из эквивалентного файла из rspec):

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

Теперь я снова запускаю ее со следующим результатом:

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

Тесты и утверждения пропали.Что может быть причиной этого?

Системная информация:

  • ruby ​​1.9.2p180 (2011-02-18 редакция 30909) [x86_64-darwin10.8.0]
  • Rails 3.1.0.rc4

1 Ответ

16 голосов
/ 08 августа 2011

Поскольку вы переключаете приложение из rspec, скорее всего, у вас есть rspec gem в тестовой среде, указанной в Gemfile, что-то вроде:

group :test do
  gem 'rspec'
end

Когда вы загружаете тестовую среду с помощью ENV["RAILS_ENV"] = "test", вы загружаете rspec, который определяет свой собственный метод describe и переопределяет тот, который определен minitest.

Итак, здесь есть 2 решения: 1. Удалить rspec gem из тестовой среды 2. Если вы все еще хотите запускать rspecs при переключении на minitest, вы можете оставить «тестовую» среду в покое и определить другую тестовую среду специально для minitest. Давайте назовем его minitest - скопируйте файл config / environment / test.rb в config / enviroment / minitest.rb, определите базу данных для среды minitest и обновите minitest_helper, чтобы установить RAILS_ENV в 'minitest':

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

(часть) 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"
...