是否可以先 运行 一个 RSpec 测试?

Is it possible to run one RSpec test before the others?

我在测试中使用 factory_bot,并希望在任何测试 运行 之前验证所有工厂。我为这种验证编写了一个测试,并希望它首先 运行 - 这在 RSpec 中可行吗?

是可行的,看这个post:https://thoughtbot.com/blog/testing-your-factories-first。方法是创建一个 factories_spec,然后将其作为先决条件添加到 rake file.

(1) 创建工厂规范文件:

 # spec/factories_spec.rb    
FactoryBot.factories.map(&:name).each do |factory_name|
  describe "The #{factory_name} factory" do
    it 'is valid' do
      expect(build(factory_name)).to be_valid
    end
  end
end

(2) 要为您的佣金规范添加先决条件:

# Rakefile    
if defined?(RSpec)
  desc 'Run factory specs.'
  RSpec::Core::RakeTask.new(:factory_specs) do |t|
    t.pattern = './spec/factories_spec.rb'
  end
end

task spec: :factory_specs

(3) 运行 你的测试

rake spec