使用rake从特定文件夹运行rspec测试
我希望使用rake在包含ing spec文件夹的文件夹中运行特定的测试。我的文件夹结构如下:使用rake从特定文件夹运行rspec测试,rspec,rake,capybara,Rspec,Rake,Capybara,我希望使用rake在包含ing spec文件夹的文件夹中运行特定的测试。我的文件夹结构如下: - tests -spec - folder_A - folder_B - rakefile 例如,当部署某些代码时,我只希望在文件夹_A中运行测试。我如何使用rake来实现这一点?我的rakefile位于我的测试文件夹中。我目前拥有以下命令: RSpec::Core::RakeTask.new(:spec) task :default => :spec 这将运行spec文件
- tests
-spec
- folder_A
- folder_B
- rakefile
例如,当部署某些代码时,我只希望在文件夹_A中运行测试。我如何使用rake来实现这一点?我的rakefile位于我的测试文件夹中。我目前拥有以下命令:
RSpec::Core::RakeTask.new(:spec)
task :default => :spec
这将运行spec文件夹中的所有测试。我已尝试将rake文件移动到spec文件夹中,并将rake任务编辑为:
RSpec::Core::RakeTask.new(:folder_A)
task :default => :folder_A
然而,这给了我一条信息:“找不到与./spec{,//*}/*.\u spec.rb匹配的示例”(注意,在文件夹A和B中,我有用于测试应用程序不同区域的子目录)
我是否可以在同一个rakefile中有两个不同的rake任务,只从文件夹_A运行测试
任何帮助都会很好 为什么不直接使用rspec
rspec spec/folder_A
更新的响应
Rakefile
中的:spec
指的是Rspec rake任务,而不是文件夹。您可以通过传递块将选项发送到任务,如
在您的情况下,您可以使用模式
选项传入文件夹的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
有关
模式
方法和其他选项的详细信息,请参阅。Hi jwadsack-是的,我目前只使用rspec,正如您上面建议的那样。我希望使用rake文件的主要原因是,我希望使用这个gem()重新运行所有失败的测试,这使用了一个rake文件;我不知道集成是如此紧密的开箱即用。谢谢你让我冲刺!