Guard:如何在Guard的控制台中运行w /中的特定标签?

时间:2013-08-29 02:41:36

标签: ruby-on-rails rspec guard spork

我在我的RSpec测试套件中使用Spork和Guard。我将慢速测试排除在运行之后:

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

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

我想知道是否有一条快捷方式可以在相同的 shell中运行慢速标签,以便Guard自动运行其测试?

有一个控制台>提示符?在查看文档后,我发现键入> . rspec . --tag slow可以正常工作......但这比转换到另一个shell要简单一些。这似乎是一个相当普遍的要求。想法?

2 个答案:

答案 0 :(得分:4)

您可以定义组,并在每个组中使用不同的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)>

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

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}

您也可以将范围切换到慢速规格并按Enter键全部运行:

[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}

希望有所帮助!

答案 1 :(得分:1)

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

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

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