rspec从一组泄漏到另一组

时间:2015-04-16 22:25:40

标签: ruby rspec rake rake-task

我有两套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

2 个答案:

答案 0 :(得分:1)

在RSpec中声明有序规范

你的状态明显存在于规格之间。当您同时运行所有测试时,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