2012-06-11 28 views
7

Tôi có một ứng dụng sử dụng đường ray 3.2 và Devise. Tôi có một bộ kiểm tra yêu cầu sử dụng rspec và Capybara.Rails 3 với Devise và rspec: Người giúp việc kiểm tra Warden không đáng tin cậy

Tôi đã cố gắng chuyển sang sử dụng trình trợ giúp kiểm tra Warden trong trình trợ giúp đăng nhập của tôi thay vì yêu cầu Capybara điền vào biểu mẫu đăng nhập và gửi. Do kích thước và độ phức tạp của bộ thử nghiệm của tôi, kết quả này trong hơn một phút rưỡi tiết kiệm trong thời gian chạy thử nghiệm của tôi.

Trong cấu hình của tôi là:

RSpec.configure do |config| 
    config.include Warden::Test::Helpers, :type => :request 
    config.after :each do 
    Warden.test_reset! 
    end 
end 

Và trong một Bối cảnh:

let!(:current_user) { FactoryGirl.create(:user) } 

background do 
    login_as(current_user, :scope => :user) 
end 

Tuy nhiên, khi chạy các bộ kiểm tra sử dụng các cấu hình này gần như mọi chạy thử nghiệm có một không ngẫu nhiên đặc tả yêu cầu khác nhau do đến trang trình bày như thể người dùng không đăng nhập. (Cụ thể, các liên kết được kiểm soát bởi một điều kiện user_signed_in? có điều kiện)

Nhiệm vụ của tôi n: Có ai khác đã gặp phải sự không đáng tin cậy như vậy và làm thế nào nó có thể được giảm nhẹ?

Trả lời

1

Điều tuyệt đối đơn giản nhất cần làm là chỉ sử dụng biểu mẫu sign_in trong khối before :each của bạn. Bạn cần những người trợ giúp kiểm tra trong thông số kỹ thuật của Bộ điều khiển, bởi vì nó được phân lập từ việc đưa ra. Bạn không có vấn đề đó trong thử nghiệm tích hợp.

+1

Tôi đồng ý rằng đó là cách dễ nhất và đó là giải pháp mà tôi hiện đang sử dụng. Tuy nhiên, tôi thực sự muốn rằng một phút rưỡi cắt bỏ các bài kiểm tra của tôi. –

+0

bạn đã thử đăng email/mật khẩu lên 'user_session_path' chưa? – DVG

+0

Vâng, điều đó hoạt động tốt với selen, nhưng do một số vấn đề với selen và firefox, chúng tôi đang sử dụng capybara-webkit không hỗ trợ đăng dữ liệu lên URL trực tiếp. –

0

Mặc dù một bài cũ tôi cũng có vấn đề này với Rails 4.1 và Warden 1.2.3. Tôi nhận thấy rằng có một phiên bản mới hơn của Warden với công việc trên những người trợ giúp kiểm tra. Bất cứ ai thành công với phiên bản mới hơn?

Btw hành vi mà tôi quan sát là Warden không phải lúc nào cũng đăng nhập thành công qua trình trợ giúp login_as. Điều này dẫn đến ứng dụng của tôi tìm thấy chính nó trên trang đăng nhập thay vì vị trí mà nó nghĩ rằng nó phải là.

+0

Tôi đang sử dụng Rails 4.1.16 với Warden 1.2.6 và không có may mắn ở đây. –

Các vấn đề liên quan