Rails: dobry przykład użycia Rspec2? (Także: ogórek, ogórek, Kapibara) [zamknięty]
Szukam raczej najnowszej aplikacji open source, która używa Rspec 2 jako biblioteki testowej. Chciałbym zobaczyć, jak doświadczony programista prawidłowo wykorzystuje bibliotekę do testowania pełnego stosu, ponieważ ciągle mam wątpliwości co do mojej wiedzy (pochodzącej z tesunit i częściowo z powodu dość rzadkiej dokumentacji najnowszej wersji Rspec, mimo że jest ona stale ulepszana).
Jeśli projekt wykorzystałby ogórek, ogórek i/lub Kapibarę, a także Rspec 2, skaczę z radości.
Jakieś wskazówki?
Zdrówko!1 answers
Moje 2 grosze:
Użyj stek zamiast ogórka. Jest prosty i wykonuje swoją pracę.
Https://github.com/cavalle/steak
Capybara pozwala używać różnych sterowników. Niektóre sterowniki obsługują javascript, działają z przeglądarką, szybciej, wolniej itp. Użyj najlepszego sterownika dla specyfikacji, którą testujesz za pomocą swingera:
Https://github.com/jeffkreeftmeijer/swinger
Używam własnego widelca Akefalosa-kierowcy-który jest szybki, obsługa javascript, UTF-8 (to dodaje mój fork) i nie wymaga zewnętrznej przeglądarki.Https://github.com/Nerian/akephalos2
Dobrą praktyką dla RSpec jest używanie "kontekstu". Zapytaj mnie, czy potrzebujesz wyjaśnienia. Zwróć również uwagę na metodę let . Zwraca cokolwiek blok zwraca. Jest to przydatne do deklarowania mocka obiektu wewnątrz i używania go na próbkach. .
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
[3]} również książka: The RSpec Book, of Pragmatic Programmers jest bardzo dobre źródło informacji na temat podstawowych pojęć stojących za RSpec, Capybara, Cucumber i tym wszystkim Behaviour Driven Development agile:) {]}
Edit:
Również używam Machinist2 do opraw. https://github.com/notahat/machinist
Działa świetnie. Lepsze niż Factory girl.Istnieje również Fabricator, który ma doskonałą stronę internetową i bardzo użyteczny DSL.
Https://github.com/paulelliott/fabrication
Możesz użyć Mechanik z fałszerstwem w celu tworzenia inteligentnych danych.
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
Możesz połączyć to z zadaniem Thor w celu wypełnienia bazy danych programistycznych, aby zobaczyć aplikację tak, jak widzi ją użytkownik końcowy.
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
Dokumentacja RSpec 2 ma wiele przykładów:
Również ten Post daje wiele innych porady:
Http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/
Kolejny post z bardzo dobrą radą:
Http://flux88.com/2011/05/dry-up-your-rspec-files-with-subject-let-blocks/
Optymalizacja czasu wykonania testów:
Http://blog.leshill.org/blog/2011/10/23/fast-specs.html
Http://jeffkreeftmeijer.com/2011/spec-helpers-bundler-setup-faster-rails-test-suites/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 17:43:11