方法之前的Rspec

时间:2010-08-08 19:50:08

标签: rspec

如果spec文件在it()示例组之前包含这个,那是什么意思?

context "when almost full (with one element less than capacity)" do
  before(:each) do
    @stack = Stack.new
    (1..9).each { |n| @stack.push n }
  end
end

context "when full" do
  before(:each) do
    @stack = Stack.new
    (1..10).each { |n| @stack.push n }
  end
end

之前执行的是哪一个?

我不明白。

1 个答案:

答案 0 :(得分:8)

before(:each)将在运行后续规范之前运行。因此,例如,在您的完整堆栈规范中,任何规范都将在执行之前设置完整堆栈。您没有任何It方法,但目前并没有真正发生。

值得注意的是,在该上下文的所有规范之前,有before(:all)运行一次。而before(:each)在每个规范之前运行。