仅在特定上下文之前运行特定代码一次

时间:2017-10-30 11:02:07

标签: ruby-on-rails ruby rspec

我想在一个特定的上下文之前运行一个特定的代码块,它应该只运行一次。我尝试将元数据用于上下文块,但它在每个示例之前调用我的代码块。

before do |context|
  p 'test test' if context.medata[:something]
end
...
describe '#execute' do
  context 'header with timelog fields', :something do
    it '123' do
      expect(true).to eq true
    end
    it '234' do
      expect(true).to eq true
    end
   end
end
当我运行rspec时,

test test出现两次。

1 个答案:

答案 0 :(得分:1)

rspec中,撰写beforebefore(:each)的简写。

您需要使用的是before(:all)

describe '#execute' do
  context 'header with timelog fields' do
    before(:all) do
      p 'test test'
    end

    it '123' do
      expect(true).to eq true
    end
    it '234' do
      expect(true).to eq true
    end
  end
end