Проблема с использованием `rake test` - PullRequest
4 голосов
/ 01 июня 2011

Интересно, как настроить тестирование в моих приложениях rails. Когда я запускаю rake test, первое, что странно, запускает связку CREATE TABLE против моего разработчика. база данных (гул .. не нравится ..). Поэтому я запускаю rake test RAILS_ENV=test и даже пытаюсь bundle exec rake test RAILS_ENV=test. Теперь CREATE TABLE против моей тестовой базы данных, но все терпит неудачу с этой ошибкой:

** Execute test:units
test/unit/category_test.rb:5:in `test': unknown command 't' (ArgumentError)
    from test/unit/category_test.rb:5:in `<class:CategoryTest>'

Я использовал базовый генератор в Rails 3 и ничего не меняю. Итак, у меня есть это в caterogy_test.rb:

require 'test_helper'

class CategoryTest < ActiveSupport::TestCase
   # Replace this with your real tests.

   test "the truth" do
       assert true
   end
end

Я использую Rails 3.0.7 и базовый конфиг.

Есть идеи?

EDIT

Я схожу с ума, сделал много попыток, ни одна из них не работает. Когда я запускаю новое приложение с несколькими вещами, rake test работает нормально, но когда я пробую это на моем текущем, оно всегда запускается против моего разработчика. дб и вообще не работают. Я попытался отредактировать тестовые файлы, чтобы вернуть их обратно, попытаться удалить / настроить тестовую базу данных различными способами, попробовать другую версию рейка, сравнить множество вещей, с одной стороны, с моим текущим приложением, а с другой - с совершенно новым. .. Ничего не нашел .. Помогите!

РЕДАКТИРОВАТЬ 2

Звучит отстойно, но нормально ли, что rake делает то же самое, что rake test?

РЕДАКТИРОВАТЬ 3

Звучит шансы, хотя я продолжаю работать над тем, что не так, я понимаю, что каждый раз, когда я запускаю rake test, он работает в среде dev, а не в тестовой среде (просматривая логи). Это делается на моем компьютере OSX и на нашем сервере FreeBSD для всех приложений Rails 3.0.7. Вы уверены, что rake test по умолчанию должен работать в тестовой среде?

РЕДАКТИРОВАТЬ 4

Пожалуйста, помогите!

РЕДАКТИРОВАТЬ 5 - РЕЗЮМЕ

При запуске rake test на моем компьютере или на нашем сервере в Rails 3.0.7 с различными приложениями происходит следующее:

  • run CREATE TABLE и INSERT INTO миграция против dev. дб.
  • не опустошайте dev. дб.
  • development.log пишется не test.log
  • также проблема с ошибкой unknowm comman 't' с одним конкретным приложением.

РЕДАКТИРОВАТЬ 6 - db config

Ничего не изменилось по умолчанию: https://gist.github.com/1006199

РЕДАКТИРОВАТЬ 7

rake db:test:prepare --trace -> ничего не ломается (но продолжайте печатать (first_time) https://gist.github.com/1007340

С RAILS_ENV="test" для граблей все идет хорошо. Это записать в журналы испытаний.

ruby -I test test/unit/category_test.rb те же ошибки, что и с rake, но без записи на dev. или протоколы испытаний.

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

куча неупорядоченных ответов:

  • операторы "CREATE TABLE" обычно означают, что ваш test_db создается с нуля (по умолчанию перед тестовой задачей запускается db: migrate).Вы уверены, что они вызваны на dev_db?также проверьте ваш config / database.yml, чтобы увидеть, есть ли какая-то опечатка (например: использование одной и той же таблицы для тестовой среды и среды разработки)

  • похоже, что есть ошибка в некоторых ваших файлах миграции(эта ошибка 't' запоминает блоки в миграциях).

  • "rake test" является задачей по умолчанию, поэтому она запускается, когда вы просто запускаете "rake" без аргументов.

РЕДАКТИРОВАТЬ:

Судя по тому, что я вижу в изменениях, начиная с 5 и выше, похоже, что у вас есть проблемы с файлами среды.поэтому попробуйте еще раз проверить: * config / environment / test.rb * config / application.rb * config / environment.rb

если с RAILS_ENV = "test", все идет хорошо , тогда я почти уверен, что вы изменили какое-то поведение по умолчанию в вашем приложении (конфиги, переменные env, какой-либо конкретный гем?)

также, в вашем test / test_helper.rb добавьте RAILS_ENV = 'test' вначало файла, это должно заставить тестовую среду.

1 голос
/ 09 ноября 2012

У меня было то же самое сообщение об ошибке, за исключением того, что мне было сказано: в `test ': неизвестная команда' i '(ArgumentError). «Исправить» или «обходной путь» должен был просто использовать:

$> bundle exec rake test

вместо использования 'rake test'

...