Я запускаю «тест rake» над моим проектом Rails 3.0.7 (Ruby 1.8.7) через командную строку.
Мое приложение rails - довольно простое готовое приложение, которое я все еще изучаю. Например. мой Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.7'
gem 'sqlite3'
Когда я делаю это без указания среды, это работает. Я предполагаю, что это мешает разработке, так как, когда я пытаюсь указать на среду разработки, она все еще работает! Также, когда я запускаю "rake test: units" или "rake test: функционалы", они тоже работают без ошибок.
Однако, когда я работаю в среде тестирования, модульные тесты не запускаются? Я пробовал это как из Rubymine IDE, так и из командной строки с одинаковыми результатами.
Выводы трассировки выглядят следующим образом - во-первых, простое «тестирование граблей»:
C:\Users\Ben\dev\railstest>rake test --trace
(in C:/Users/Ben/dev/railstest)
** Invoke test (first_time)
** Execute test
** Invoke test:units (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
** Execute db:test:load
** Invoke db:schema:load (first_time)
** Invoke environment
** Execute db:schema:load
** Execute test:prepare
** Execute test:units
Loaded suite C:/dev/lang/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader Started
.......................
Finished in 2.821289 seconds.
23 tests, 24 assertions, 0 failures, 0 errors
** Invoke test:functionals (first_time)
** Invoke test:prepare
** Execute test:functionals
Loaded suite C:/dev/lang/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader Started
.............
Finished in 3.34668 seconds.
13 tests, 25 assertions, 0 failures, 0 errors
** Invoke test:integration (first_time)
** Invoke test:prepare
** Execute test:integration
А теперь неудачный запуск в тестовой среде
C:\Users\Ben\dev\railstest>rake environment RAILS_ENV=test test --trace
(in C:/Users/Ben/dev/railstest)
** Invoke environment (first_time)
** Execute environment
** Invoke test (first_time)
** Execute test
** Invoke test:units (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
** Invoke test:functionals (first_time)
** Invoke test:prepare
** Execute test:functionals
Loaded suite C:/dev/lang/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader Started
.............
Finished in 3.328125 seconds.
13 tests, 25 assertions, 0 failures, 0 errors
** Invoke test:integration (first_time)
** Invoke test:prepare
** Execute test:integration
Errors running test:units!
В сообщении об ошибке больше нет текста и нет дальнейших указаний о том, что это за ошибки на самом деле. Я перезапустил db:schema:load
в обеих средах sqlite3 и db:seed
, чтобы также заполнить несколько таблиц базы данных, хотя тестовые данные обычно загружаются через приборы.
Я полагаю, что проблема здесь заключается в попытке запустить модульные тесты в тестовой среде, но я не могу понять, почему?