2011-11-13 88 views
3

我有幾個視圖規範:編輯,索引,新,顯示,給定的Rails(3)控制器,我想有一些他們之間共享的樣板設置代碼。我想避免把它放在spec_helper.rb文件中。有任何想法嗎?更具體地說,在spec/views/steps中,我有四個文件:{edit,new,show,index} .html.erb_spec.rb。我想爲他們分享一些代碼,如視圖規範之間的共享代碼

let(:workflow) do 
    document = Factory.create(:document) 
    document.user = user 
    document.save! 
    document.workflow 
    end 

例如 - 確切的代碼並不重要。我想這樣做,而不是把它放在spec_helper.rb。

回答

4

你會發現rspec具有這個東西:shared context

它可以讓你做這樣的事情

shared_context 'workflow' do 
    let(:workflow) do 
    document = Factory.create(:document) 
    document.user = user 
    document.save! 
    document.workflow 
    end 
end 

如果你需要不同的技術規範的文件之間共享這一點,在你店內spec/support文件寫這篇文章。在你的測試中,你可以寫:

describe 'Something' do 
    include_context 'workflow' 

    it 'behaves correctly' do 
    ... 
    end 
end 

希望這會有所幫助。

+0

通知,'規格/ support'文件僅僅是一個慣例和RSpec不會從中autorequire的文件,所以您需要爲'需要「規格/支持/ filey'' – lakesare

+0

確實如此。我通常在我的'rails_helper.rb'(以前是spec_helper)中包含以下代碼行:'Dir [Rails.root.join(「spec/support/**/*。rb」)] each {| f |要求f} ' – nathanvda