如何在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
或者x
, specify
, describe
和context
:
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.rb
有config.filter_run focus: true
和config.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"
。