2011-12-28 4 views
7

RSpec, Spork, Capybara 및 Capybara Mechanic을 사용하여 Facebook 연결을 사용하는 등록 경로에 대한 통합 테스트를 작성합니다. 등록을 통해 올바르게 탐색하지만 새 사용자는 테스트 데이터베이스 대신 개발 데이터베이스에 작성됩니다.카피 바라에서 테스트 데이터베이스를 사용하는 방법은 무엇입니까?

RSpec은 테스트 환경을 사용하도록 설정되었으며 사양에서 실행되는 모든 모델 메서드가 모두 테스트 데이터베이스를 방문하지만 모든 UI 작업이 개발에 영향을 미쳤음을 확인했습니다. 내 개발 데이터베이스에서 볼 수 있으며, 새로운 사용자가 생성 된 것을 테스트 후

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].com" 
    fill_in 'pass', :with => "password" 
    click_button "Log In" 

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

end 

:

여기 내 테스트입니다.

database_cleaner 설정을 시도했지만 도움이되지 않았습니다.

누구나 내가 capybara가 테스트 데이터베이스에 도달 할 수 있도록 내가해야 할 일을 알고 있습니까?

레일 3.1.3

RSpec에 2.7.0

spork 0.9.0

삐 1.1.0

0.3.0.rc3

+0

직접 해결하셨습니까? 내가 밟고있는 앱에서 비슷한 문제가 발생했습니다. 테스트에서 레코드로 로그인하려고하지만 레코드가 존재하지 않는다고 말하고 있습니다. 그래서 그것은 dev 환경을 사용하는 것과 관련 있다고 생각했지만 dev에 레코드를 추가하는 것은 존재하지 않는다고 말하고 있습니다. 따라서 카피 바라가 rspecs 테스트 환경보다 다른 데이터베이스/환경을 사용하고 있는지 확실하지 않습니다. – JDutil

+0

수정에 대한 내 대답을 참조하십시오. 어떻게 사용자를 만들고 있습니까? FactoryGirl을 사용하여 테스트 데이터베이스에 삽입합니다. – Chris

+0

FactoryGirl도 사용합니다. 레코드는 테스트 데이터베이스 내에서 의도 된대로 작성됩니다. 내가 Selenium이나 Webkit으로 드라이버를 바꿀 때 브라우저가 레코드와 상호 작용할 필요가있다.하지만 ... POW 구성이 실행을 시도하고 있기 때문에 응답과 같은 서버 설정을 시도했다. 브라우저에서 dev 모드에서,하지만 그 중 하나가되지 않습니다. – JDutil

답변

4

문제 삐 - 기계화 테스트와 병렬로 실행되는 별도의 개발 서버가 있었으며 테스트가 동일한 주소/포트를 기본값으로 사용하고있었습니다. 나는 Capybara가 다른 포트를 사용할 수 있도록 다음을 spec_helper.rb에 추가하여이 문제를 해결했습니다.

Capybara.run_server = true 
Capybara.server_port = 7000 
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
관련 문제