2014-03-31 84 views
1

我有這樣的事情在我的RSpec文件時(它爲我工作正常):值分配給多個變量..調用一個方法

before do 
     @attr = attributes_for(:album)  
     post :create, album: @attr 
    end 
    it { expect(Album.exists?(@attr)).to be_true } 
    it { expect(response).to redirect_to(assigns[:album]) } 

是否有可能使其不attributes_for(:album)在一個單獨的行和@attr變量?或者甚至其他更好的方式..

+0

你的問題似乎有點不清楚?你的目標是什麼? – engineersmnky

+0

擺脫'@ attr'臨時工。變量。我相信它可以做得更多.. Ruby :) – pawel7318

回答

4

無需before block@attr可變的,你可以在例如改變這樣的事情:

it "creates a album in the database" do 
    expect { post :create, album: attributes_for(:album) }.to change(Album, :count).by(1) 
end 
+0

是的,但是他如何在測試中檢索該「Album」以確保其正確創建? – engineersmnky

+0

@engineersmnky查看我的更新回答。 –

+0

我在某處也看到了這種方式,但是..是否足以假設它被正確保存?並且我在那裏有更多的「測試」,所以我想將它保存在塊之前。 – pawel7318