我在测试中使用factory_bot
,并希望在任何测试运行之前验证所有工厂。我为这样的验证写了一个测试并希望它先运行 - 这在RSpec中是否可行?
是的,这是可行的,请看这篇文章: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)添加rake规范的先决条件:
# 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