我在我的RSpec测试套件中使用Spork和Guard。我将慢速测试排除在运行之后:
RSpec.configure do |config|
...
config.filter_run_excluding slow: true
...
end
然后当我需要在一个单独的shell中运行慢速测试:$ rspec . --tag slow
我想知道是否有一条快捷方式可以在相同的 shell中运行慢速标签,以便Guard自动运行其测试?
有一个控制台>
提示符?在查看文档后,我发现键入> . rspec . --tag slow
可以正常工作......但这比转换到另一个shell要简单一些。这似乎是一个相当普遍的要求。想法?
答案 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选项仅运行所需的测试。