如何在Rspec中只运行特定的testing?

我认为有一种方法只运行给定标签的testing。 有人知道吗?

find这个文档并不容易,但是你可以用一个哈希来标记示例。 例如。

# spec/my_spec.rb describe SomeContext do it "won't run this" do raise "never reached" end it "will run this", :focus => true do 1.should == 1 end end $ rspec --tag focus spec/my_spec.rb 

更多关于GitHub的信息。 (任何有更好的链接,请指教)

(更新)

RSpec现在在这里logging非常详细 。 有关详细信息,请参阅–tag选项部分。

从v2.6开始,通过包含configuration选项treat_symbols_as_metadata_keys_with_true_values ,可以更简单地expression这种types的标记,它允许您执行以下操作:

describe "Awesome feature", :awesome do

其中:awesome被视为如下:awesome => true

另请参阅此答案以了解如何configurationRSpec以自动运行“集中”testing。 这对Guard来说效果特别好。

您可以使用–example(或-e)选项运行包含特定string的所有testing:

 rspec spec/models/user_spec.rb -e "User is admin" 

我使用那个最多。

或者,您可以传递行号: rspec spec/my_spec.rb:75 – 行号可以指向单个规范或上下文/描述块(运行该块中的所有规范)

在你的spec_helper.rb中:

 RSpec.configure do |config| config.filter_run focus: true config.run_all_when_everything_filtered = true end 

然后在你的规格:

 it 'can do so and so', focus: true do # This is the only test that will run end 

你也可以用'fit'来关注testing,或者用'xit'来排除testing,如下所示:

 fit 'can do so and so' do # This is the only test that will run end 

您也可以用冒号将多个行号串起来:

 $ rspec ./spec/models/company_spec.rb:81:82:83:103 

输出:

 Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}} 

从RSpec 2.4(我猜)你可以在it前面加一个f或者xspecifydescribecontext

 fit 'run only this example' do ... end xit 'do not run this example' do ... end 

http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#fit-class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#xit-class_method

请确保在您的spec_helper.rbconfig.filter_run focus: trueconfig.run_all_when_everything_filtered = true

您也可以运行具有focus: true规格focus: true默认情况下为focus: true

投机/ spec_helper.rb

 RSpec.configure do |c| c.filter_run focus: true c.run_all_when_everything_filtered = true end 

然后简单地运行

 $ rspec 

只有专注的testing才会运行

那么当你移除focus: true所有testing都会被再次运行

更多信息: https : //www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters

你可以运行rspec spec/models/user_spec.rb -e "SomeContext won't run this"