1

我在我的 RSpec 测试套件中使用了 Spork 和 Guard。我排除了运行缓慢的测试:

RSpec.configure do |config|
  ...
  config.filter_run_excluding slow: true
  ...
end

然后,当我需要时,我在单独的 shell 中运行慢速测试:$rspec . --tag slow

我想知道是否有捷径可以在Guard 自动运行其测试的同一shell 中运行慢速标签?

有控制台>提示吗?在查看文档后,我发现输入 >. rspec . --tag slow可以工作......但这比切换到另一个 shell 更冗长。似乎这将是一个相当普遍的要求。想法?

4

2 回答 2

6

您可以定义组并在每个组中具有不同的 rspec 配置。

将以下代码附加到以下内容/Guardfile

scope group: :fast

group :fast do
  guard 'rspec', cli: '--tag ~slow' do
    # code for watching
  end
end

group :slow do
  guard 'rspec', cli: '--tag slow' do
    # code for watching
  end
end

当您启动 Guard 时,它默认为快速规格:

$ guard                                                                                                          
21:56:35 - INFO - Guard::RSpec is running
21:56:35 - INFO - Guard is now watching at '/Users/michi/testproject'
[1] {Fast} guard(main)>

按回车键将运行所有快速规格:

22:02:00 - INFO - Run Fast
22:02:00 - INFO - Running all specs
Run options: exclude {:slow=>true}

现在你可以通过按下来运行所有慢的slow

[2] {Fast} guard(main)> slow
22:02:50 - INFO - Run Slow
22:02:50 - INFO - Running all specs
Run options: include {:slow=>true}

您还可以将范围切换到慢速规格并按回车键运行它们:

[3] {Fast} guard(main)> scope slow
[4] {Slow} guard(main)>
22:03:30 - INFO - Run Slow
22:03:30 - INFO - Running all specs
Run options: include {:slow=>true}

希望有帮助!

于 2013-08-29T20:04:30.923 回答
1

此代码将运行我们正在查看的文件中标记为“快速”的所有测试。

guard 'rspec', :version => 2, :cli => "--tag ~fast" do
# code for watching
end

您需要使用 cli 选项仅运行您需要的测试。

于 2013-08-29T07:54:36.463 回答