2011-11-13 53 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