我如何在Rspec中只运行特定的测试?

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


找到文档并不容易,但可以使用散列标记示例。 例如。

# 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现在在这里被详细记录。 有关详细信息,请参阅--tag选项部分。

从v2.6开始,通过包含配置选项treat_symbols_as_metadata_keys_with_true_values ,可以更简单地表达此类标签,该选项允许您执行以下操作:

describe "Awesome feature", :awesome do

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

关于如何配置RSpec以自动运行“集中”测试,请参阅此答案。 这对Guard来说效果特别好。


您可以使用--example(或-e)选项运行包含特定字符串的所有测试:

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

我最喜欢那个。


在你的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'来关注测试,或者用'xit'来排除测试,如下所示:

fit 'can do so and so' do
    # This is the only test that will run
end
链接地址: http://www.djcxy.com/p/59297.html

上一篇: How do I run only specific tests in Rspec?

下一篇: Rspec: "array.should == another