2011-12-28 40 views
7

Tôi đang sử dụng RSpec, Spork, Capybara và Capybara Mechanic để viết các bài kiểm tra tích hợp cho đường dẫn đăng ký sử dụng kết nối Facebook. Nó điều hướng chính xác thông qua đăng ký, nhưng những người dùng mới được tạo ra trong cơ sở dữ liệu phát triển của tôi thay vì cơ sở dữ liệu thử nghiệm.Làm thế nào để sử dụng cơ sở dữ liệu thử nghiệm với Capybara?

RSpec được thiết lập để sử dụng môi trường thử nghiệm và tôi đã xác nhận rằng mọi phương thức mô hình tôi chạy trong đặc tả đều nhấn vào cơ sở dữ liệu thử nghiệm, nhưng tất cả các hành động UI đều phát triển.

Dưới đây là thử nghiệm của tôi:

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 

Sau khi thử nghiệm mà tôi có thể nhìn vào cơ sở dữ liệu phát triển của tôi và người dùng mới đã được tạo ra ở đó.

Tôi cũng đã cố gắng thiết lập database_cleaner và điều đó không hữu ích.

Bất kỳ ai cũng biết tôi cần làm gì để capybara sẽ truy cập cơ sở dữ liệu thử nghiệm?

ray 3.1.3

rspec 2.7.0

Spork 0.9.0

Capybara 1.1.0

Capybara-cơ giới hóa 0.3.0.rc3

+0

Bạn đã tự giải quyết được vấn đề này chưa? Tôi đang gặp phải sự cố tương tự trong ứng dụng tôi đang thực hiện. Tôi đang cố gắng đăng nhập với một bản ghi trong thử nghiệm nhưng nó nói rằng bản ghi không tồn tại. Vì vậy, tôi đã nghĩ rằng nó có liên quan đến việc sử dụng môi trường dev, nhưng việc thêm bản ghi vào dev là nói nó cũng không tồn tại. Vì vậy, tôi không chắc liệu Capybara có đang sử dụng một cơ sở dữ liệu/môi trường hoàn toàn khác với môi trường thử nghiệm rspecs hay không. – JDutil

+0

Xem câu trả lời của tôi cho bản sửa lỗi. Bạn tạo người dùng như thế nào? Tôi đang sử dụng FactoryGirl mà chèn vào cơ sở dữ liệu thử nghiệm. – Chris

+0

Tôi cũng sử dụng FactoryGirl. Các hồ sơ đang được tạo ra trong cơ sở dữ liệu thử nghiệm như dự định. Khi tôi thay đổi trình điều khiển thành Selenium hoặc Webkit và trình duyệt cần tương tác với các bản ghi mà họ không nhận được trả về ... Tôi đã thử đặt các cài đặt máy chủ như câu trả lời của bạn vì tôi nghĩ cấu hình POW của tôi đã khiến nó chạy trong chế độ dev trong trình duyệt, nhưng điều đó cũng không đúng. – JDutil

Trả lời

4

Vấn đề là tôi đã có một máy chủ phát triển riêng biệt chạy song song với các thử nghiệm và các thử nghiệm đã được mặc định cho cùng một địa chỉ/cổng. Tôi đã giải quyết vấn đề này bằng cách thêm thông tin sau vào spec_helper.rb để Capybara sử dụng một cổng khác.

Capybara.run_server = true 
Capybara.server_port = 7000 
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
Các vấn đề liên quan