2010-09-13 6 views
0

J'ai créé un plugin pour un projet OS Rails. Le plugin fait échouer les tests, afin de préserver la cohérence du système, je voudrais remplacer les tests de l'application qui échoue une fois le comportement de mon plugin appliqué. J'ai créé des correctifs pour modifier les méthodes de certaines classes existantes grâce à des correctifs dans les méthodes Class et Instance, et je pensais pouvoir faire la même chose avec les tests, mais malheureusement je n'ai pas accès aux tests d'application dans un plugin .Remplacer les tests d'application sur les rails plugin

Lorsque j'ai essayé d'accéder au TestClass, je reçois l'erreur suivante:

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' 

Je l'ai lu Dependencies.load_paths, mais j'avais pas le succès sur cette voie.

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

Toute idée de savoir si cela pourrait être possible ou non.

Répondre

0

Vous pouvez essayer load_once_paths mais je ne suis pas sûr que cela puisse résoudre votre problème. Il est assez difficile de diagnostiquer sans regarder le code réel qui cause le problème. Cela dit, vous ne devriez pas avoir à modifier les tests d'application dans votre plugin. Les tests de l'application doivent tester le comportement attendu par les développeurs de l'application. Si l'ajout du plug-in à l'application provoque l'échec des tests, le comportement de l'application n'est plus celui attendu. Dans ce cas, les développeurs de l'application doivent mettre à jour les tests si le comportement est souhaité (ou supprimer ou modifier le plugin si le comportement n'est pas souhaité).

Questions connexes