Xin chào, tôi muốn thực hiện một số thử nghiệm chức năng cho ứng dụng Rails 3 sử dụng Devise và CanCan.Kiểm tra chức năng với Rails và Devise. Những gì để đặt trong đồ đạc của tôi?
Trong mô hình tài khoản của tôi, tôi có tuổi sử dụng, tôi muốn kiểm tra mà người dùng chỉ có thể truy cập một trang nhất định nếu họ là:
- Logged trong
- Hơn 35
Tôi đã thấy trong tài liệu Devise mà tôi có thể sử dụng: * sign_in * và tôi đã đặt nó trong các bài kiểm tra của mình và nó có vẻ hoạt động - bài kiểm tra không lỗi vì tôi có:
include Devise::TestHelpers
trong * test_helper.rb của tôi *
Khi tôi lấy nó ra, thử nghiệm của tôi có lỗi vì * sign_in * không được xác định. Vì vậy, nó không phải là một vấn đề trợ giúp.
Khi tôi chạy thử nghiệm và kiểm tra xem nếu span # loggedin có một lần thử nghiệm không thành công vì có 0 lần xuất hiện. span # loggedin chỉ xuất hiện * nếu user_signed_in? *
Tôi cần đặt gì trong đồ đạc hoặc thử nghiệm để tạo người dùng thử cũng là người dùng đã đăng ký đầy đủ (đã xác nhận v.v.)?
Xem Code:
<% if user_signed_in? %>
<span id="loggedin">User is signed in</span>
User age is <span id="age"><%= current_user.age.to_s %></span>
<% end %>
Kiểm tra Code:
test "should get index" do
sign_in :one
get :index
assert_response :success
assert_select 'span#loggedin', :count => 1
end
Fixture:
one:
email: [email protected]
age: 36
Nó hoạt động ổn trong phát triển khi tôi tự đăng nhập nhưng tôi hy vọng để tự động nó tất cả - điểm thử nghiệm thực sự !!
Bạn có thể sử dụng ERB trong đồ đạc của mình, điều này sẽ giúp bạn làm cho các đồ đạc dễ bảo trì hơn. Bạn có thể sử dụng các công cụ như FactoryGirl thay vì (hoặc kết hợp với) đồ đạc, điều này sẽ làm cho các bài kiểm tra của bạn dễ dàng hơn để duy trì, nhưng sẽ làm chậm các bài kiểm tra của bạn một cách đáng kể. – iain
Tôi biết về việc sử dụng ERB trong đồ đạc của mình nhưng tôi cần phải làm gì để tạo ra vật cố định ở trên? Đó là trái tim của câu hỏi của tôi - đặc biệt là những gì tôi cần phải đặt trong đồ đạc của tôi? –
Tôi biết đây là một oldie, nhưng tôi stumbled khi nó tìm kiếm sự giúp đỡ trong một kịch bản tương tự. Các thử nghiệm của tôi cho thấy rằng chỉ cần thêm dấu thời gian 'confirmed_at' vào lịch thi đấu của bạn có vẻ như là lừa. – Chris