Примеры Rspec продолжают работать, несмотря на сон - PullRequest
0 голосов
/ 10 мая 2018

У меня есть следующий 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 голосов
/ 10 мая 2018

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

За ним следует ошибка NameE из ссылки на cruel_world.

...