2010-05-15 17 views
14

Tôi đang gặp một số khó khăn trong thử nghiệm đưa ra với shoulda:kiểm tra đưa ra với shoulda

2) Error: 
test: handle :index logged as admin should redirect to Daily page. 
(Admin::DailyClosesControllerTest): 
NoMethodError: undefined method `env' for nil:NilClass 
devise (1.0.6) [v] lib/devise/test_helpers.rb:52:in 
`setup_controller_for_warden' 

Tôi có điều này trong test_helper tôi:

include Devise::TestHelpers 

Suy nghĩ? Cảm ơn trước,

Cristi

Trả lời

17

include Devise::TestHelpers không đi trong file test_helper.rb, mà là bên trong phạm vi của các lớp học thử nghiệm cá nhân. Cũng giống như README của họ cho thấy:

class ActionController::TestCase 
    include Devise::TestHelpers 
end 
+0

Đúng. Điều đó là vậy đó. Thx –

12

Tôi không chắc chắn nếu rspeicher là hoàn toàn chính xác, nhưng đặt:

class ActionController::TestCase 
    include Devise::TestHelpers 
end 

ở dưới cùng của test_helper.rb (có sau khi END của class ActiveSupport::TestCase) nên làm việc. Nó có cho 3 hoặc 4 dự án của tôi cho đến nay, bao gồm cả một trong những tôi đang làm việc ngày hôm nay.

Sau đó, bạn có thể sử dụng sign_in users(:one) nếu bạn đang sử dụng đồ đạc, trong các thử nghiệm của mình. Trừ khi shoulda đang làm rối tung nó lên?

+0

Đó là khác nhau. Ông đã chỉ đưa "bao gồm Devise :: TestHelpers" trong phạm vi cơ sở của tập tin test_helper.rb của mình, không scoped bên trong lớp TestCase. –

+0

Đó chính là điều mà README nói. – jordanpg

+0

+1 cho "có sau END của lớp ActiveSupport :: TestCase" –