如何运行一个单一的testing在RSpec警卫?

我使用guard-rspec在我的文件发生变化时自动运行必要的rspectesting,我喜欢它的工作原理。 但是,当我用多个testingdebugging一个文件时,有时我只想要重新运行一个单独的testing。 例如,从命令行使用rspec:

rspec spec/requests/my_favorite_spec.rb:100 

这将仅运行my_favorite_spec.rb中第100行的单个规范。

我试着把上面的内容input到控制台,但是它只是运行了所有的testing,就像我刚刚按下input一样。 在控制台中是否有另一种语法来运行单个规范?

你必须引用spec/spec_helper.rb文件来接受:focus => true语句。

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

那么你可以使用

 it 'does something', :focus => true do //your spec end 

要么

 describe "something", :focus => true do before do sign in visit page end it { does something } it { does something else } end 

如果您打算采取这种方法,那么您可能还希望确保所有的规格在没有:focus => true情况下运行,使用文档化的方法 :

 RSpec.configure do |config| config.run_all_when_everything_filtered = true end 

你可以用filter做很多事情。 你可能想看看这个网页: https : //relishapp.com/rspec/rspec-core/v/3-0/docs/filtering

我认为你可以为你想运行的规范添加“focus:true”选项

 it 'does something', focus: true do //your spec end 

那么你只保存文件和警卫运行只有那个重点testing

当你完成你只是删除“重点:真”

您可以在Guardfile中使用failed_mode: :focus focus,如下所述: https : //github.com/guard/guard-rspec#list-of-available-options