尽管遇到了睡眠,Rspec示例仍继续运行

时间:2018-05-09 22:50:43

标签: ruby rspec sleep

我有以下rspec

context "example 1" do
  puts "hello"
  it "example 1 it" do
    sleep(50)
  end
end
context "example 2" do
  puts "thanks"
  it "example 2 it"
end
end

当我使用rake运行时,我得到以下输出:

hello
thanks

example 1
 example 1 it
  <<waits for 50s >>

为什么thanks会在睡眠50秒时打印出来?我希望只有在睡眠结束后才能打印thanks

1 个答案:

答案 0 :(得分:1)

puts正在执行,因为rspec会处理您的文件,而不是与正在运行的测试结合使用。为了向您自己证明这一点,您可以尝试在it语句之后引用未定义的局部变量。

例如:

context "example 1" do
  puts "hello"
  it "example 1 it" do        
    sleep(50)
  end
  puts "goodbye" + cruel_world
end

当你运行rspec时,你会看到你的“你好”,然后是

An error occurred while loading ./spec/your_spec.rb

后面引用了cruel_world的NameError。