Поделиться кодом между представлениями спецификации - PullRequest
3 голосов
/ 13 ноября 2011

У меня есть несколько спецификаций вида: редактировать, индексировать, новый, показывать для данного контроллера 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.

Ответы [ 2 ]

4 голосов
/ 13 ноября 2011

Вы найдете, что rspec имеет именно то, что нужно для этого: общий контекст .

Это позволит вам сделать что-то вроде этого

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

Если вам нужно поделиться этим между различными spec-файлами, запишите это в файл, который вы храните внутри spec/support. В своем тесте вы можете написать:

describe 'Something' do
  include_context 'workflow'

  it 'behaves correctly' do
    ...
  end
end

Надеюсь, это поможет.

2 голосов
/ 13 ноября 2011

Может быть, вы можете использовать shared context: https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-context

...