在视图规范之间共享代码

时间:2011-11-13 12:21:43

标签: rspec rspec-rails

对于给定的Rails(3)控制器,我有几个视图规范:edit,index,new,show,我想在它们之间共享一些样板设置代码。我想避免将其放在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中。

2 个答案:

答案 0 :(得分: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

希望这有帮助。

答案 1 :(得分:2)