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!
Author: polarblau, 2011-01-06

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:

Http://relishapp.com/rspec

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/

 54
Author: Nerian,
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