测试由Rspec + factory girl设置,我有大约20个Rspec测试文件,所有这些都共享一些必需的设置变量。例如:
let!(:event) { create(:event) }
let!(:user) { create(:user) }
let!(:user) { create(:ticket) }
我不想为每个测试文件复制粘贴这些变量赋值,是否有更简洁的方法来填充变量?提前谢谢。
答案 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