Почему Rake запускает модель, для которой я не могу найти тест? - PullRequest
1 голос
/ 01 апреля 2009

Когда я запускаю "rake", он загружает одну из моделей из всех классов, которые есть в моем каталоге app / models. Дело в том, что это не тот тест, для которого у меня есть тест, а просто модель, которая у меня есть, которая фактически используется со скриптом / бегуном для фонового запуска и выполнения задач для моего основного приложения на Rails. В конце файла я получил его, создав новый экземпляр класса выше и затем запустив main для класса.

Поскольку он зацикливается бесконечно, я определенно не хочу, чтобы он запускался тестовым кодом. Почему юнит-тестирование или Рейк каким-либо образом связаны с этим другим классом?

К своему стыду, я не писал никаких тестов для этого кода, и я решил, что начну писать некоторые из них, но это сразу остановило меня, потому что я не могу даже запустить Rake для того, что там сейчас происходит, без этого непрочное.

1 Ответ

1 голос
/ 01 апреля 2009

Я не уверен, что это ошибка Рэйка - у меня такое ощущение, что когда вы добавляете :environment в качестве зависимости, вы запускаете всю инфраструктуру Rails, что может потребовать каждого файла модели (это довольно дико догадки - я еще не очень внимательно следил за процессом загрузки).

Как бы то ни было, кажется, что ваша модель требуется, и в этот момент весь ад вырвался на свободу.

Глядя на script / runner и, что более полезно, railties / lb / commands / runner.rb, последовательность выполнения выглядит примерно так:

require 'boot' # boot the Rails app
eval(File.read(code_or_file)) # run what you asked for

Эта вторая строка (в действительности это строка 45 в runner.rb) выглядит как ключ. Как было бы, если бы вы определили отдельный скрипт (скажем, в / lib), который содержал код, который запускает вашу модель? Я думаю, что это, вероятно, было бы более подходящим для Rails способом сделать это. И это, вероятно, остановит Рэйка испортить ваши тесты ...

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