2012-03-20 23 views
6

Tôi có một mô tả khối như thế này:Tôi có thể sử dụng trước đây: tất cả đều có capybara không?

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 

Bài kiểm tra là khá đắt tiền từ công việc quan trọng được thực hiện trên lưu tài liệu. Đó là tốt, nhưng nó thậm chí còn chậm hơn vì nó thực sự làm điều đó tải lên 3 lần. Vì vậy, điều hiển nhiên cần làm là làm cho các khối trước đó thành trước: tất cả các khối - nhưng khi tôi làm điều đó, chỉ khối đầu tiên {} được thực thi đúng và các khối sau đó đang thực thi trên một trang trống để chúng không thành công.

Trước đây: tất cả các khối phải làm việc với capybara, và nếu vậy thì tôi đang làm gì sai ở đây?

Trả lời

5

Capybara resets session sau mỗi lần chạy mẫu, vì vậy khi bạn di chuyển visit new_course_document_path(course) vào khối before (:all), bạn không có gì để truy cập bắt đầu từ ví dụ thứ hai.

Tôi khuyên bạn chỉ nên chạy các thử nghiệm mà bạn đang làm việc. Điều này có thể đạt được với một RSpec tag option hoặc guard-rspec, và nó sẽ giúp bạn tiết kiệm rất nhiều thời gian.

+2

Vâng, tôi đã đặt các bài kiểm tra chậm này vào các tệp của riêng chúng và chúng được điều hành bởi CI. Tuy nhiên, nó có vẻ khá lãng phí, có vẻ như điều này có thể làm cho các thông số kỹ thuật chạy nhanh hơn rất nhiều cho rất nhiều bài kiểm tra bằng cách sử dụng capybara ... – Jords

Các vấn đề liên quan