我有两套spec文件: 规格/ 1单元/ _spec.rb 规格/ UNIT2 / _spec.rb
unit2 two有一些存根应该只在unit2中使用但不知何故它会影响unit1测试:
RSpec::Core::RakeTask.new(:spec) do |spec|
spec.fail_on_error = false
spec.rspec_opts = "--format documentation"
spec.pattern = FileList['spec/*/*_spec.rb']
end
如果像以下那样分开,那么一切都很好。
RSpec::Core::RakeTask.new(:spec1) do |spec1|
spec.fail_on_error = false
spec.rspec_opts = "--format documentation"
spec.pattern = FileList['spec/unit1/*_spec.rb']
end
RSpec::Core::RakeTask.new(:spec2) do |spec2|
spec.fail_on_error = false
spec.rspec_opts = "--format documentation"
spec.pattern = FileList['spec/unit2/*_spec.rb']
end
我 rake spec1 和rake spec2都很好。
知道问题是什么吗? 如果不是我怎么写这样的RakeTask rake spec确实耙spec1 + rake spec2
答案 0 :(得分:1)
你的状态明显存在于规格之间。当您同时运行所有测试时,RSpec将以随机顺序运行测试,除非您使用--order
flag另行指定。
或者,如果您希望将一个Rake任务声明为依赖另一个,则可以声明a Rake task has prerequisites。例如:
Spec::Core::RakeTask.new(:spec1) do |spec1|
spec.fail_on_error = false
spec.rspec_opts = "--format documentation"
spec.pattern = FileList['spec/unit1/*_spec.rb']
end
RSpec::Core::RakeTask.new(:spec2) do |spec2|
spec.fail_on_error = false
spec.rspec_opts = "--format documentation"
spec.pattern = FileList['spec/unit2/*_spec.rb']
end
desc "run specs in order"
task :ordered_specs => [:spec1, :spec2]
答案 1 :(得分:0)
task :test_all do
[ :spec1, :spec2 ].each do |t|
Rake::Task[t].invoke
end
end