2010-08-02 63 views
34

你會如何在rSpec中設計Rails 3中的Devise。我有一個UsersControllerUser模型。這兩者都與Devise目前有關,我正在編寫控制器規格,我真的很難與我的期望,因爲設計sign_in真的干擾了作品。rSpec和Rails3中的stubbing設計

任何事情都會有所幫助。

+2

隨着設計,你可以完全剔除用戶模型: https://github.com/plataformatec/devise/wiki/How-To:-Stub-authentication-in-controller-specs – Flov 2012-09-02 05:49:13

回答

74

我發現它現在很容易做到這一點。 rspec2和devise有問題,但現在已解決。我想你會需要更新你的寶石。然後,你可以寫

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 

[更新]在色器件維基現在有一個詳細的(甚至更多先進的日期)description

+7

正如向其他人可能會遇到此問題的說明。如果您使用確認,請確保您的工廠定義:confirmed_at或您將其傳入。 – RyanJM 2011-07-22 17:14:19

+2

在設計wiki上有詳細說明:https://github.com/plataformatec/devise/wiki/How-To:-Controllers -and-Views-tests-with-Rails-3-(and-rspec) – 2011-11-13 14:55:42

+0

@KevinBedell,URL幾乎是正確的 - 它缺少最後一個')'。因此,正確的URL是[this](https://github.com/plataformatec/devise/wiki/How-To:-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29) – Zabba 2012-05-05 20:02:45

9

您可以嘗試嘲弄底層監獄長其設計依賴於,這裏是一些細節的鏈接,您如何使用RSpec做到這一點(http://wiki.github.com/hassox/warden/)對象:http://www.michaelharrison.ws/weblog/?p=349(條目包括一些其他的話題,以及,你想要的解決方案是朝向頁面的底部。)

+0

非常感謝!正是我一直在尋找的。 – stuartc 2010-08-05 06:54:09

+0

下面的新答案提供了一個更好的方法http://stackoverflow.com/questions/3387485/stubbing-devise-in-rspec-and-rails3/3512813#3512813 – 2010-10-20 10:25:56