2012-03-20 22 views
6

mam opisać bloku tak:Czy mogę używać wcześniej: wszystko z kapibar?

describe "Documents" do 
    subject { page } 
    let (:course) { FactoryGirl.create(:course) } 
    describe "new" do 
    before do 
     visit new_course_document_path(course) 
     fill_in "Name", with: "TestDocument" 
     attach_file "Original document", "#{Rails.root}/spec/fixtures/03_GUI_concurrency.pdf" 
    end 
    it { should have_selector('title', text:"Upload document")} 
    it { should have_selector('h1', text:"Upload document")} 
    describe "when clicking upload" do 
     before { click_button "Upload Document" } 
     it "should have the document name" do 
     subject.should have_selector('p', text: "TestDocument") 
     end 

     it "should have 22 pages" do 
     subject.should have_selector('.page', count: 22) 
     end 

     describe "when visiting the course page" do 
     before { visit course_path(course) } 
     it { should have_selector 'li', text: "TestDocument"} 
     end 
    end 
    end 

Test jest dość drogie, ponieważ znacząca praca jest wykonywana na zapisywanie dokumentu. W porządku, ale jest jeszcze wolniej, ponieważ robi to 3 razy. Tak więc oczywistą rzeczą do zrobienia jest uprzednie utworzenie bloków przed: wszystkimi blokami - ale kiedy to zrobię, tylko pierwszy blok {} zostanie wykonany poprawnie, a te następne będą wykonywane na pustej stronie, więc nie będą działać.

Czy przed: wszystkie bloki powinny działać z kapibarą, a jeśli tak, to co robię źle tutaj?

Odpowiedz

5

Kapibara resets session po każdym przykładowym uruchomieniu, więc po przeniesieniu visit new_course_document_path(course) do bloku before (:all), nie trzeba było nic robić od drugiego przykładu.

Polecam, aby uruchamiać tylko te testy, nad którymi pracujesz. Można to osiągnąć za pomocą RSpec tag option lub guard-rspec, dzięki czemu zaoszczędzisz WIELE czasu.

+2

Tak, umieściłem te wolne testy w ich własnych plikach i są one uruchamiane przez CI. Mimo to wydaje się to dość nieekonomiczne, wydaje się, że może to spowodować, że specyfikacja będzie działała o wiele szybciej w przypadku wielu testów z użyciem kapibary ... – Jords

Powiązane problemy