rspec 从一组泄漏到另一组
rspec leak from one set to another
我有两套规范文件:
spec/unit1/_spec.rb
spec/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
我的
耙规格 1
和 rake spec2 都很好。
知道问题出在哪里吗?
如果不是,我该如何编写 RakeTask 这样的
rake spec 做 rake spec1 + rake spec2
在 RSpec
中声明订购规格
您显然拥有在规范之间持续存在的状态。当您 运行 将所有测试放在一起时,RSpec 将 运行 以随机顺序进行测试,除非您使用 --order
flag.
另行指定
声明有序的 Rake 任务
或者,如果您希望声明一个 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]
task :test_all do
[ :spec1, :spec2 ].each do |t|
Rake::Task[t].invoke
end
end
我有两套规范文件: spec/unit1/_spec.rb spec/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
我的 耙规格 1 和 rake spec2 都很好。
知道问题出在哪里吗? 如果不是,我该如何编写 RakeTask 这样的 rake spec 做 rake spec1 + rake spec2
在 RSpec
中声明订购规格您显然拥有在规范之间持续存在的状态。当您 运行 将所有测试放在一起时,RSpec 将 运行 以随机顺序进行测试,除非您使用 --order
flag.
声明有序的 Rake 任务
或者,如果您希望声明一个 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]
task :test_all do
[ :spec1, :spec2 ].each do |t|
Rake::Task[t].invoke
end
end