我认为有一种方法可以只对给定的标签进行测试,有人知道吗?
或者你可以传递行号: rspec spec/my_spec.rb:75-行号可以指向一个规范或上下文/描述块(运行该块中的所有规范)
rspec spec/my_spec.rb:75
您可以使用 :focus散列属性标记示例,
:focus
# spec/foo_spec.rb RSpec.describe Foo do it 'is never executed' do raise "never reached" end it 'runs this spec', focus: true do expect(1).to eq(1) end end
rspec --tag focus spec/foo_spec.rb
更多关于 GitHub的信息
(更新)
RSpec 现在是 在 relishapp.com 上有精彩的记录。有关详细信息,请参阅 标签选项部分。
在2.6版本中,这种标记可以通过包含配置选项 treat_symbols_as_metadata_keys_with_true_values来更简单地表示,它允许您执行以下操作:
treat_symbols_as_metadata_keys_with_true_values
describe "Awesome feature", :awesome do
其中 :awesome被当作 :awesome => true来处理。
:awesome
:awesome => true
另外,请参阅 这个答案了解如何配置 RSpec 来自动运行“聚焦”测试。
可以使用 —— example (or-e)选项运行包含特定字符串的所有测试:
rspec spec/models/user_spec.rb -e "User is admin"
我用得最多的一个。
你也可以用冒号连接多个行号:
$ 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、 specify、 describe和 context前面加上一个 f或者 x:
it
specify
describe
context
f
x
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。
spec_helper.rb
config.filter_run focus: true
config.run_all_when_everything_filtered = true
确保在 spec_helper.rb中配置了 RSpec 以注意 focus:
focus
RSpec.configure do |config| config.filter_run focus: true config.run_all_when_everything_filtered = true end
然后在你的参数中加入 focus: true作为参数:
focus: true
it 'can do so and so', focus: true do # This is the only test that will run end
您还可以通过将 it更改为 fit(或排除使用 xit的测试)来关注测试,如下所示:
fit
xit
fit 'can do so and so' do # This is the only test that will run end
也可以运行缺省情况下具有 focus: true的规格
Spec/spec _ helper. rb
RSpec.configure do |c| c.filter_run focus: true c.run_all_when_everything_filtered = true end
那就跑吧
$ rspec
只进行集中测试
然后,当您删除 focus: true所有测试很好地再次运行
更多信息: 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"运行。
rspec spec/models/user_spec.rb -e "SomeContext won't run this"
在 RSpec 的新版本中,配置支持 fit更加容易:
# spec_helper.rb # PREFERRED RSpec.configure do |c| c.filter_run_when_matching :focus end # DEPRECATED RSpec.configure do |c| c.filter_run focus: true c.run_all_when_everything_filtered = true end
参见:
Https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
Https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
您可以简单地使用 filter_run_including和 filter_run_excluding通过任何元数据运行
filter_run_including
filter_run_excluding
例如下面这行只允许运行 Rails 系统测试
config.filter_run_including type: :system
这一行将允许运行除 Rails 系统测试之外的所有内容
config.filter_run_excluding type: :system