2012-05-11 110 views
2

我是新來的Rspec請告訴我什麼是控制器規格爲以下兩種方法在索引方法只有登錄頁面是通過輸入用戶名控制去登錄方法和查找人的名字看到。如果人發現然後控制到人的路徑,否則返回到它自己的索引頁的根路徑。Rspec控制器規格

class HomeController < ApplicationController 
def index 

end 

def login 
    @person = Person.find(:all, :conditions => ['people.name =?', params[:person][:name]]) 

    if @person.blank? 
    redirect_to root_path   
    else 
    redirect_to people_path 
    end 
end 
end 

請幫幫我。
謝謝。

+0

爲什麼你要查找這樣的人? @person = Person.find_by_name(params [:person] [:name])會更簡單嗎? – Jords

回答

5

你RSpec的控制器測試可能是這樣的:

describe HomeController do 
    render_views 
    it "Logs in Person with non-blank name" do 
    person = Factory(:Person, name: "non-blank name") 
    get :login 
    response.should redirect_to(people_path) 
    end 
    it "does not log in Person with blank name" do 
    person = Factory(:Person, name: "") # blank name 
    get :login 
    response.should redirect_to(root_path) 
    end 
end 

參考rails controller specs瞭解詳情。

編輯:

廠:即(在這種情況下測試的對象)創建對象的代碼。這是創建測試對象的首選方法,因爲您可以自定義代碼以創建具有最少重複屬性的不同屬性的對象。

夾具:如果您不使用工廠,則可以爲要創建的每個對象指定屬性。對於超過2-3個對象,這些數據很快就會變得難以管理(例如,添加屬性時,需要對每個對象進行更改)。

存根:如果您不想在創建模型對象時創建數據庫記錄,則可以對模型代碼白色測試控制器進行存根。

有關詳細信息,請參閱:
1. testing guide
2. asciicast(注:此代碼指的是舊版本FactoryGirl寶石的下面參見長達最新API FactoryGirl的。)
3。 FactoryGirl Readme

+0

感謝您的回答。我是Rspec的新手我很感謝你如果你能解釋一下你的代碼中的Factory是什麼以及使用Factory,Fixtures,stub和matchers有什麼不同? –

+0

我已經相應地更新了我的答案。 – Salil

+0

謝謝,這是非常有幫助的。 –

相關問題