2011-02-10 2 views
2

J'ai deux projets rails qui partagent les mêmes modèles (un site web public et un site admin) via un sous-module git.Comment puis-je obtenir RSPec2 pour prendre en charge les modèles et les spécifications dans un chemin différent?

Dans mon fichier application.rb j'ai ajouté la ligne suivante: config.autoload_paths += ["shared/models", "shared/lib"], et cela fonctionne très bien lors de l'exécution des applications Rails, mais quand je tente d'exécuter specs il semble charger le premier fichier routes.rb, puis le fichier application.rb - qui signifie que les spécifications erreur sur - en particulier avec concevoir. En plus de cela, Rspec ne récupère pas les spécifications dans le chemin shared/spec - est-il possible d'ajouter ce chemin à la tâche spec, comme je dois configurer mon propre fichier rspec.rake dupliquant la tâche ou quelque chose comme ca?

Vive

Répondre

3

Pour charger shared/modèles, vous ne devez l'ajouter à config.autoload_paths.

ensuite de charger vos spécifications de/spécification partagée, ajoutez ceci à spec_helper.rb:


shared_model_specs = config.filename_pattern.split(",").collect do |pattern| 
    Dir["shared/spec/models/#{pattern.strip}"] 
end.flatten 
config.files_to_run.concat shared_model_specs 

Juste une note de côté pour d'autres gars intéressés, si vos fichiers de spécifications sont dans le dossier de spécification normale mais sous une dossier personnalisé sous, vous pouvez le charger comme ceci:


config.include RSpec::Rails::ModelExampleGroup, :type => :model, :example_group => { 
    :file_path => config.escaped_path(%w[spec shared models]) 
} 

PS: Je recommande de mettre le code partagé ou modules dans un petit bijou, puis les utiliser dans les deux projets. De cette façon, la gemme contient ses propres tests et le référencement de plusieurs projets est beaucoup plus facile et organisé.

Questions connexes