Переопределить тесты приложений на плагине rails - PullRequest
0 голосов
/ 13 сентября 2010

Я создал плагин для OS Rails Project. Плагин делает тесты неудачными, чтобы сохранить целостность системы, я бы хотел переопределить тесты приложений, которые не выполняются после применения поведения моего плагина.

Я создал патчи для изменения методов некоторых существующих классов с помощью патчей в методах Class и Instance, и я думал, что смогу сделать то же самое с тестами, но, к сожалению, я не получаю доступ к тестам приложений в плагине.

Когда я пытался получить доступ к TestClass, я получаю следующую ошибку:

cannot remove Object::DEFAULT_OPTIONS
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `remove_const'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `remove_constant'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `instance_eval'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `remove_constant'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:549:in `new_constants_in'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:549:in `each'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:549:in `new_constants_in'
...source/trunk/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'

Я читал о Dependencies.load_paths, но у меня не получилось на этом пути.

test_path = Rails.root.join('test', 'unit')
$LOAD_PATH << test_path
ActiveSupport::Dependencies.load_paths << test_path
require 'project_test'

Любая идея, может ли это быть каким-либо образом или нет.

1 Ответ

0 голосов
/ 13 сентября 2010

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

Тем не менее, вам не нужно изменять тесты приложений в вашем плагине.Тесты для приложения должны проверять поведение, которое ожидают увидеть разработчики приложения.Если добавление плагина в приложение приводит к сбою тестов, то поведение приложения больше не соответствует ожидаемому.В этом случае разработчики приложения должны обновить тесты, если поведение соответствует желаемому (или удалить или изменить плагин, если поведение нежелательно).

...