2012-12-12 103 views
0

我有一個遊戲模型,有一些版本(has_many)。我選擇使用嵌套資源來表達這一點。如何測試嵌套資源

resources :games do 
    resources :releases, only: [:new, :create, :destroy] 
end 

我想使用RSpec來測試我的發佈控制器操作。這是我的測試文件的一部分。

describe "GET new" do 
    it "assigns a new release as @release" do 
    get :new, {}, valid_session 
    assigns(:release).should be_a_new(Release) 
    end 
end 

當我沒有設置game_id參數時,我有一個No Routes Match錯誤。當我添加:game_id => 1我有一個RecordNotFound錯誤。

所以我的問題是如何設置一個遊戲對象來表達嵌套的資源?

+0

這應該可以工作,但我認爲你需要先創建一個'遊戲' - 我們用factorygirl來做這件事,但你不需要。 S – simonmorley

+0

謝謝,說實話,我對測試,rspec和factorygirl不是很熟悉。你可以發佈一個例子,如果你有一個? – NotGrm

回答

0

我真的很新rspec太溫和了:)一旦你正確地測試你的應用程序,你的生活將會更快,更好,更少的壓力。你的應用程序將會受益匪淺,你的客戶也會受益。

大約一個月後,我不使用瀏覽器,直到我需要樣式化我的頁面。更快,更高效。

就個人而言,我開始通過本教程閱讀:

而且還與以往一樣,以下RailsCasts幫助極大:

在你的情況下,嘗試像這樣(沒有FactoryGirl)。

describe "GET new" do 
it "assigns a new release as @release" do 
    game = Game.create!(<< INSERT VALID ATTRIBUTE >>) 
    get :new, {:game_id => game.id}, valid_session 
    assigns(:release).should be_a_new(Release) 
end 
end 

我認爲是對的,沒有測試過自己。還有一些其他的方法你可以做到這一點,包括放了遊戲的製作方法是一個過濾器之前:

before(:each) do 
    @game = Game.create!(<< INSERT VALID ATTRIBUTE >>) 
end 

或者,就像我說的,用工廠女孩建立模型爲您服務。

這就是我們的做法。