2011-12-28 18 views
7

Używam narzędzi RSpec, Spork, Capybara i Capybara Mechanic do pisania testów integracji dla ścieżki rejestracji, która korzysta z połączenia Facebook. Poprawnie porusza się po rejestracji, ale nowi użytkownicy są tworzeni w mojej bazie danych programowania zamiast w bazie testowej.Jak korzystać z testowej bazy danych w Capybara?

Program RSpec jest skonfigurowany do korzystania ze środowiska testowego i potwierdziłem, że wszystkie metody modeli, które uruchamiam w mojej specyfikacji, trafiły do ​​testowej bazy danych, ale wszystkie działania interfejsu użytkownika zostały uruchomione.

Oto moja próba:

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 

Po tym teście mogę patrzeć na mojej bazy rozwoju i nowy użytkownik został tam utworzony.

Próbowałem również skonfigurować database_cleaner, a także nie pomogło.

Ktoś wie, co muszę zrobić, aby kapibara trafiła do testowej bazy danych?

szyny 3.1.3

rspec 2.7.0

Spork 0.9.0

kapibary 1.1.0

kapibary-mechanize 0.3.0.rc3

+0

Czy rozwiązałeś ten problem sam? Mam podobny problem w aplikacji, nad którą pracuję. Próbuję zalogować się z rekordem w teście, ale mówi, że rekord nie istnieje. Tak więc myślałem, że jest to związane z używaniem środowiska dev, ale dodanie rekordu do dev mówi, że on też nie istnieje. Nie jestem więc pewien, czy Capybara używa zupełnie innej bazy danych/środowiska niż środowisko testowe rspecs. – JDutil

+0

Zobacz moją odpowiedź na poprawkę. W jaki sposób tworzysz swoich użytkowników? Używam FactoryGirl, która wstawia do testowej bazy danych. – Chris

+0

Używam również FactoryGirl. Rekordy są tworzone w bazie testowej zgodnie z przeznaczeniem. Kiedy zmieniam sterownik na Selenium lub Webkit i przeglądarka musi wchodzić w interakcje z rekordami, których nie zwróci ... Próbowałem ustawić ustawienia serwera tak jak odpowiedź, ponieważ myślałem, że moja konfiguracja POW spowodowała uruchomienie w trybie deweloperskim w przeglądarce, ale tak nie jest. – JDutil

Odpowiedz

4

problemu było to, że miałem oddzielny serwer programistyczny działający równolegle z testami, a testy domyślnie dotyczyły tego samego adresu/portu. Rozwiązałem to, dodając następujące parametry do spec_helper.rb, aby Capybara używała innego portu.

Capybara.run_server = true 
Capybara.server_port = 7000 
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
Powiązane problemy