2013-03-09 9 views
6

Oto przykładowy test integracji z kapibary w szynach 3.2.12. click_link 'New Log' to połączenie ajax. Jednak strona otwarta zaczyna się od $() i ma kilka jsowych ucieczek, takich jak \ n i \ log-log.Błąd testu integracji z kapibarem dla wywołania ajax z szynami 3.2.12

it "should work with link on show customer_comm_record page" do 
     visit customer_customer_comm_records_path(@cust) 
     #visit customer_customer_comm_record_path(@cust, @crecord) 
     click_link @crecord.id.to_s  
     click_link 'New Log' 
     save_and_open_page 
end 

Próbowaliśmy także zawinąć sprawę z describe "", :js => true do, jak tam jest błąd mówiąc

`An error occurred in an after hook ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked:` 

nie ma błędu z wykonania kodu. Co jest nie tak z przypadkiem rspec? Dzięki za pomoc.

+0

Czy masz otwartą konsolę Railsową, gdy widzisz? –

+0

Nie próbowałem konsoli szyny. Czy jest coś nowego z konsoli szyny dla błędu? – user938363

+1

Zobacz http://stackoverflow.com/questions/6165889/database-is-locked –

Odpowiedz

8

Wygląda na to, że Twój serwer blokuje bazę danych, aby test nie mógł zostać oczyszczony po uruchomieniu.

Podczas korzystania z Capybara bez JavaScript testy i serwer działają w jednym procesie i wątku. Oznacza to, że mogą udostępniać to samo połączenie z bazą danych i transakcję. Oznacza to, że RSpec może użyć prostej transakcji bazy danych, aby wycofać zmiany po zakończeniu testu i dlaczego nie widzisz żadnych sprzecznych kłód między testem a serwerem.

Po uruchomieniu z :js => true rzeczy są nieco inne, serwer uruchamia się w oddzielnym wątku lub proces do testów, więc każdy będzie za pomocą oddzielnego połączenia z bazą danych i transakcji. Oznacza to, że strategia transakcji bazy danych, której RSpec domyślnie używa do czyszczenia, nie będzie działać. Powoduje to również błędy blokady w twoim przypadku.

The Capybara readme mówi o tym problemie i poleca klejnot database_cleaner jako alternatywę w tej sytuacji. Konieczne będzie skonfigurowanie czyszczenia bazy danych w celu użycia strategii skracania zamiast transakcji

+0

zobacz szczegółowe wyjaśnienie na http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/ – John