方法之前的Rspec

nev*_*ame 2 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
Run Code Online (Sandbox Code Playgroud)

哪一个将是之前执行的?

我不明白.

Fin*_*las 8

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

可能值得注意的是,在该背景的所有规范之前before(:all),将运行一次.而before(:each)在每个规范之前运行.

  • 对于定义它的上下文中的所有示例,运行`before(:each)`方法.编写规范的方式是两个`before(:each)`方法在不同的上下文中,因此它们都会运行,但不是同一个例子. (4认同)