2015-09-17 31 views
0

你不能在我的Rails應用程序中做任何事情(除了登錄到登錄頁面),我已經花了很多時間來驗證work(在我的控制器規範中設計和在我的功能規格中設置監獄長) 。我應該在我的rspec測試中包含身份驗證嗎?

我正走在正確的道路上嗎?這種感覺不對,因爲我想測試自己的控制器...不一定重複認證測試(除了在用戶控制器中顯式測試認證)。

什麼是最佳實踐?你是否明確地進行了身份驗證,或者是否以某種方式僞造了身份驗證,並專注於個人控制器/功能規範而無需身份驗證?

回答

1

這樣的感覺錯了,因爲我想測試我的控制器 自己...(在我的用戶 控制器除了明確地測試認證)不一定是重複驗證測試過 遍。

這就是爲什麼Devise爲測試控制器提供自己的test helpers。您不需要每次都測試您的授權碼,您只需要一個助手,在您的測試中授權用戶。

最小設置:

rails_helper.rb

require 'spec_helper' 
require 'rspec/rails' 
# note: require 'devise' after require 'rspec/rails' 
require 'devise' 

RSpec.configure do |config| 
    config.include Devise::TestHelpers, :type => :controller 
end 

然後,在你的控制器規格:

# in case you use FactoryGirl, if you don't, just create your models as you like 
let(:current_user) { FactoryGirl.create(:user) } 
before do 
    # this line is needed for testing Devise controllers 
    @request.env["devise.mapping"] = Devise.mappings[:user] 
    sign_in current_user 
end 
相關問題