使用rake从特定文件夹运行rspec测试

使用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文件

我希望使用rake在包含ing 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文件;我不知道集成是如此紧密的开箱即用。谢谢你让我冲刺!