2010-08-02 30 views
34

Làm thế nào bạn có thể phát triển trong Rails 3 bằng rSpec. Tôi có một mô hình UsersController và một mô hình User. Cả hai đều được liên kết với Devise vào lúc này, tôi đang viết thông số kỹ thuật điều khiển và tôi thực sự đang gặp khó khăn với kỳ vọng của mình khi Devise sign_in thực sự gây nhiễu các tác phẩm.Stubbing Devise in rSpec và Rails3

Mọi thứ sẽ hữu ích.

+2

Với sự sáng tạo, bạn hoàn toàn có thể loại bỏ mô hình người dùng: https://github.com/plataformatec/devise/wiki/How-To:-Stub-authentication-in-controller-specs – Flov

Trả lời

74

Tôi thấy rằng giờ đây việc này khá dễ dàng. Đã xảy ra sự cố với rspec2 và đưa ra, nhưng hiện đã được giải quyết. Tôi đoán bạn sẽ cần phải cập nhật đá quý của bạn. Sau đó, bạn có thể viết

require 'spec_helper' 

describe DoStuffController do 
    include Devise::TestHelpers 

    before (:each) do 
    @user = Factory.create(:user) 
    sign_in @user 
    end 

    describe "GET 'index'" do 
    it "should be successful" do 
     get 'index' 
     response.should be_success 
    end 
    end 
end 

[UPDATE] Trên wiki devise bây giờ có một chi tiết (và có lẽ nhiều up-to-date) description.

+7

Cũng giống như ghi chú cho những người khác có thể gặp phải điều này. Nếu bạn sử dụng xác nhận, hãy chắc chắn rằng nhà máy của bạn xác định: confirm_at hoặc bạn vượt qua nó. – RyanJM

+2

Có một mô tả chi tiết về điều này trên wiki phát triển: https://github.com/plataformatec/devise/wiki/How-To:-Controllers -and-Views-tests-with-Rails-3- (và-rspec) –

+0

@KevinBedell, URL gần như đúng - nó thiếu ')' cuối cùng. Do đó, URL chính xác là [this] (https://github.com/plataformatec/devise/wiki/How-To:-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29) – Zabba

9

Bạn có thể thử chế nhạo đối tượng canh gác cơ bản (http://wiki.github.com/hassox/warden/) dựa vào một số chi tiết về cách bạn có thể thực hiện điều này với RSpec: http://www.michaelharrison.ws/weblog/?p=349 (mục nhập cũng bao gồm một số chủ đề khác) ở phía dưới cùng của trang.)

+0

Cảm ơn bạn rất nhiều! Chỉ là những gì tôi đang tìm kiếm. – stuartc

+0

Câu trả lời mới dưới đây cung cấp cách tốt hơn http://stackoverflow.com/questions/3387485/stubbing-devise-in-rspec-and-rails3/3512813#3512813 –

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