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ẹ?
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. –
bạn đã thử đăng email/mật khẩu lên 'user_session_path' chưa? – DVG
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. –