为什么RSpec不在shared_examples_for块中运行这些嵌套的描述块?

时间:2014-04-17 02:54:30

标签: ruby-on-rails rspec

shared_examples_for "test" do    

  specify {  } # RSpec executes this line.

  describe "nested" do

    specify { } # RSpec doesn't execute this line.

    describe "nested nested" do

      specify {  } # RSpec doesn't execute this line too.

    end
  end
end

为什么会这样? RSpec甚至无法识别嵌套行。 尽管实际上有3个例子,它只显示“1个例子”。 我正在使用RSpec版本2.14。

1 个答案:

答案 0 :(得分:1)

没有任何东西在运行,因为没有什么可以运行的!您声明了shared_examples_for块,但您实际上并未在任何地方使用这些示例。

使用it_behaves_like实际运行示例:

╭── jxf@polytope · 2014-04-16 · 23:07:32
│   ‹ruby:ruby-2.1.0@›
│   /tmp/foo
╰─▶ ψ cat test_spec.rb 
shared_examples_for "test" do
  specify { }
  describe "outer" do
    specify { }
    describe "inner" do
      specify { }
    end
  end
end

describe "naked" do
  it_behaves_like "test"
end

了解我们现在如何使用it_behaves_like块?让我们来看看这些例子:

╭── jxf@polytope · 2014-04-16 · 23:08:18
│   ‹ruby:ruby-2.1.0@›
│   /tmp/foo
╰─▶ ψ rspec test_spec.rb 
...

Finished in 0.00047 seconds
3 examples, 0 failures