2012-03-20 11 views
6

Tengo un bloque describen así:¿Puedo usar antes: todo con capibara?

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 

La prueba es bastante caro ya que el trabajo se hace significativo en el ahorro del documento. Está bien, pero es aún más lento ya que en realidad lo está cargando 3 veces. Entonces, lo más obvio es hacer que los bloques anteriores entren antes: todos los bloques, pero cuando lo hago, solo el primer bloque it {} se ejecuta correctamente y los que siguen se ejecutan en una página vacía, por lo que fallan.

Son antes: se supone que todos los bloques funcionan con carpincho, y si es así, ¿qué estoy haciendo mal aquí?

Respuesta

5

Capybara resets session después de cada ejecución de ejemplo, por lo que cuando movió visit new_course_document_path(course) en el bloque before (:all), no tenía nada que visitar a partir de un segundo ejemplo.

Recomendaría ejecutar solo las pruebas en las que está trabajando. Esto se puede lograr con un RSpec tag option o guard-rspec, y le ahorrará MUCHO tiempo.

+2

Sí, he puesto estas pruebas lentas en sus propios archivos y las ejecuta el CI. Aún así, parece bastante derrochador, parece que esto podría hacer que las especificaciones corran mucho más rápido para una gran cantidad de pruebas con el capibara ... – Jords

Cuestiones relacionadas