2011-12-28 13 views
7

Utilizzo RSpec, Spork, Capybara e Capybara Mechanic per scrivere test di integrazione per un percorso di registrazione che utilizza la connessione Facebook. Naviga correttamente attraverso la registrazione, ma i nuovi utenti vengono creati nel mio database di sviluppo anziché nel database di test.Come utilizzare il database di test con Capybara?

RSpec è configurato per utilizzare l'ambiente di test e ho confermato che tutti i metodi di modello che eseguo nelle mie specifiche colpiscono tutti il ​​database di test, ma tutte le azioni dell'interfaccia utente hanno raggiunto lo sviluppo.

Ecco la mia prova:

it "go through registration path" do 
    print "RAILS_ENV: #{Rails.env}\n" # correctly prints 'test' 
    print "1) #{User.count}\n" # correctly shows the user count in my test database (zero) 

    Capybara.current_driver = :mechanize 

    visit root_path 
    click_link "register" 

    # Fill in Facebook Connect form 
    fill_in 'email', :with => "[email protected]" 
    fill_in 'pass', :with => "password" 
    click_button "Log In" 

    print "2) #{User.count}\n" # still shows zero users in the test database 

end 

Dopo quel test posso guardare la mia database di sviluppo e il nuovo utente è stato creato lì.

Ho provato anche a configurare database_cleaner e questo non ha aiutato.

Qualcuno sa cosa devo fare in modo che capibara raggiunga il database di test?

rotaie 3.1.3

rspec 2.7.0

spork 0.9.0

capibara 1.1.0

capibara-meccanizzare 0.3.0.rc3

+0

Hai finito per risolvere questo problema per te? Sto riscontrando un problema simile in un'app a cui sto lavorando. Sto provando ad accedere con un record nel test ma sta dicendo che il record non esiste. Quindi pensavo che fosse correlato all'utilizzo dell'ambiente di sviluppo, ma aggiungere il record a dev è come dire che non esiste neanche. Quindi non sono sicuro se Capybara stia utilizzando un diverso database/ambiente interamente rispetto all'ambiente di test rspecs. – JDutil

+0

Vedere la mia risposta per la correzione. Come stai creando i tuoi utenti? Sto usando FactoryGirl che si inserisce nel database di test. – Chris

+0

Uso anche FactoryGirl. I record vengono creati all'interno del database di test come previsto. Quando cambio il driver in Selenium o Webkit e il browser deve interagire con i record non vengono restituiti però ... Ho provato a impostare le impostazioni del server come la tua risposta anche dal momento che stavo pensando che la mia configurazione POW stava causando l'esecuzione in modalità dev nel browser, ma non è questo il caso. – JDutil

risposta

4

Il problema era che avevo un server di sviluppo separato in esecuzione in parallelo con i test e che i test erano predefiniti per lo stesso indirizzo/porta. Ho risolto questo problema aggiungendo quanto segue a spec_helper.rb in modo che Capybara usasse una porta diversa.

Capybara.run_server = true 
Capybara.server_port = 7000 
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
Problemi correlati