Rspec共享许多测试的设置变量

时间:2015-03-30 15:18:31

标签: ruby-on-rails rspec

测试由Rspec + factory girl设置,我有大约20个Rspec测试文件,所有这些都共享一些必需的设置变量。例如:

   let!(:event) { create(:event) }
   let!(:user) { create(:user) }
   let!(:user) { create(:ticket) }

我不想为每个测试文件复制粘贴这些变量赋值,是否有更简洁的方法来填充变量?提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果你使用let,你不需要重复它们。它将持续通过当前的describe / context块。

例如以下内容都应该通过:

describe 'some stuff' do

   let!(:event) { create(:event) }

   it 'should get an event' do  
      expect(event).to_not be_nil
   end 

   describe 'indented stuff' do

     let!(:user) { create(:user) }

     it 'should still get an event' do  
        expect(event).to_not be_nil
     end

     it 'should get a user' do  
        expect(user).to_not be_nil
     end

   end
end

要在多个文件中共享设置,请在rails_helper / spec_helper中定义方法:

module CommonSetup 
  def setup_vars
    let!(:event) { create(:event) }
    let!(:user) { create(:user) }
    let!(:user) { create(:ticket) }
  end
end
...
...
Rspec.configure do |c|
...
  c.extend CommonSetup 
...
end

然后在您的规范中,只需在规范中调用setup_vars