在视图规格之间共享代码

Dav*_*ton 4 rspec rspec-rails

对于给定的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
Run Code Online (Sandbox Code Playgroud)

例如-确切的代码无关紧要。我想这样做而不将其放在spec_helper.rb中。

nat*_*vda 5

您会发现rspec具有与此相关的功能:共享上下文

它可以让你做这样的事情

shared_context 'workflow' do
  let(:workflow) do
    document = Factory.create(:document)
    document.user = user
    document.save!
    document.workflow
  end
end
Run Code Online (Sandbox Code Playgroud)

如果您需要在不同的规范文件之间共享此文件,请将其写在您存储在其中的文件中spec/support。在测试中,您可以编写:

describe 'Something' do
  include_context 'workflow'

  it 'behaves correctly' do
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。