我希望使用rake在包含spec文件夹的文件夹中运行特定测试。我的文件夹结构如下:
- tests
-spec
- folder_A
- folder_B
- rakefile
因此,例如,当部署某些代码时,我只想在folder_A中运行测试。我如何使用rake做到这一点?我的rakefile存在于我的tests文件夹中。我目前有命令:
RSpec::Core::RakeTask.new(:spec)
task :default => :spec
这会像您期望的那样在spec文件夹中运行所有测试。我已经尝试将rake文件移动到spec文件夹并将rake任务编辑为:
RSpec::Core::RakeTask.new(:folder_A)
task :default => :folder_A
然而,这给了我一条消息:“没有找到符合./spec{,//*} /*_spec.rb的例子”(请注意,文件夹A和BI中有子目录对于被测应用的不同领域)
我是否有可能在同一个rakefile中有2个不同的rake任务,只能从folder_A运行测试?
任何帮助都会很棒!!
答案 0 :(得分:6)
为什么不使用rspec?
rspec spec/folder_A
更新回复
:spec
中的Rakefile
是指Rspec rake任务,而不是文件夹。您可以通过传递rake-task doc page
在您的情况下,您可以使用pattern
选项传递文件夹的glob。
RSpec::Core::RakeTask.new(:spec) do |t|
t.pattern = 'spec/folder_A/*/_spec.rb'
end
对于两个不同的rake任务,您需要在每个任务中实例化RakeTask
。所以你的整个Rakefile
看起来像这样:
require 'rspec/core/rake_task'
task :folder_A do
RSpec::Core::RakeTask.new(:spec) do |t|
t.pattern = 'spec/folder_A/*/_spec.rb'
end
Rake::Task["spec"].execute
end
task :folder_B do
RSpec::Core::RakeTask.new(:spec) do |t|
t.pattern = 'spec/folder_B/*/_spec.rb'
end
Rake::Task["spec"].execute
end
task :default do
RSpec::Core::RakeTask.new(:spec)
Rake::Task["spec"].execute
end
有关pattern
方法和其他选项的详细信息,请参阅the RakeTask doc。