Сбой теста Rake только в тестовой среде - PullRequest
0 голосов
/ 18 мая 2011

Я запускаю «тест 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, чтобы также заполнить несколько таблиц базы данных, хотя тестовые данные обычно загружаются через приборы.

Я полагаю, что проблема здесь заключается в попытке запустить модульные тесты в тестовой среде, но я не могу понять, почему?

1 Ответ

1 голос
/ 19 мая 2011

Когда вы запускаете rake test, все модульные, функциональные и интеграционные тесты запускаются в тестовой среде. Из того, что вы показали, тесты работают именно так, как и ожидалось. Вам не нужно явно указывать rake использовать тестовую среду - это предполагается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...