Rails: Bon exemple d'utilisation Rspec2? (Également: concombre, conserves au vinaigre, Capybara) [fermée]
Question
Je suis à la recherche d'une application open source plutôt récente qui utilise Rspec 2 comme bibliothèque de test. Je voudrais voir comment un développeur expérimenté utilise la bibliothèque correctement pour tester la pile complète, puisque je suis constamment dans le doute en ce qui concerne ma propre connaissance (en provenance de TestUnit et en partie en raison de la documentation assez clairsemée de la dernière version Rspec, même si elle est constamment améliorée).
Si un projet utiliserait concombre, conserves au vinaigre et / ou Capybara ainsi avec Rspec 2, vous auriez pu me sauter de joie.
Les pointeurs?
Vive!
La solution
Mes 2 cents:
Utiliser Steak au lieu de concombre. Il RSpec à sa base, il est simple et il fait le travail.
https://github.com/cavalle/steak
Capybara vous permettent d'utiliser des pilotes différents. Certains pilotes prennent en charge le javascript, exécutez avec un navigateur, plus rapide, plus lent, etc. Utilisez le meilleur pilote pour la spécification que vous testez en utilisant Swinger:
https://github.com/jeffkreeftmeijer/swinger
J'utilise ma propre fourchette de Akephalos - un conducteur -. Qui est rapide, javascript de soutien, UTF-8 (qui est ce que ma fourchette ajoute) et n'a pas besoin d'un navigateur externe
https://github.com/Nerian/akephalos2
Une bonne pratique pour RSpec est d'utiliser « contexte ». Demandez-moi si vous avez besoin d'éclaircissements. Aussi, prenez note du let méthode . Elle retourne quel que soit le rendement du bloc. Il est utile pour déclarer l'objet d'une maquette à l'intérieur et de les utiliser sur les échantillons. .
feature "Course" do
let(:school) {School.make!}
context "Loged in" do
before(:each) do
switch_to_subdomain(school)
end
context "In the new course form" do
before(:each) do
click_link("Courses")
click_link("New course")
end
scenario "New course" do
end
scenario "A Course without name should not be accepted" do
end
scenario "A new course should not be created if there is another one with the same name in the same school" do
end
end
end
end
En outre, le livre: Le livre RSpec, des programmeurs Pragmatique est une très bonne ressource pour vous initier sur les concepts de base derrière RSpec, Capybara, concombre et tout ce comportement Driven Development agile chose:)
Edit:
En outre, j'utiliser Machinist2 pour les appareils. https://github.com/notahat/machinist
Fonctionne très bien. Mieux que fille d'usine.
Il y a aussi Fabricator, qui ont un excellent site Web et une connexion DSL très utilisable.
https://github.com/paulelliott/fabrication
Vous pouvez utiliser Machiniste avec Contrefaçon afin de créer des données intelligentes.
https://github.com/sevenwire/forgery
School.blueprint do
name { "Pablo de olavide"}
end
Student.blueprint do
first_name { Forgery::Name.first_name}
last_name { Forgery::Name.last_name }
school { School.make! }
end
Vous pouvez combiner cela avec une tâche Thor afin de vous remplir la base de données de développement, pour voir l'application que l'utilisateur final verrait.
def populate
require File.expand_path('config/environment.rb')
require File.expand_path('spec/support/blueprints.rb')
drop
puts "populating database"
1.times do |num|
school = School.make!
50.times do
Student.make!(:school => school)
end
5.times do
Course.make!(:school => school)
Professor.make!(:school => school)
end
end
end
La documentation de RSpec 2 a de nombreux exemples:
En outre, cette annonce donne beaucoup d'autres conseils:
http://eggsonbread.com/2010 / 03/28 / my-rspec-meilleures pratiques et-conseils /
Un autre poste avec un très bon conseil:
http: // flux88 .com / 2011/05 / sec-up-vos-rspec-fichiers-avec-sujet-let-blocs /
L'optimisation du temps d'exécution des essais:
http://blog.leshill.org/blog/ 2011/10/23 / rapide specs.html
http://jeffkreeftmeijer.com/2011 / spec-aides-Bundler-setup-rapides rails-test-suites /