Несколько блоков «до» в блоке «описание» Minitest

Я пытаюсь иметь два блока «до» под блоком описания, но работает только последний.

describe '#bunch_of_tests' do

  before(:all) do
    p 'do this before all tests'
  end

  before(:each) do
    p 'do this before each test'
  end

describe 'this is 1st test' do
  it 'runs 1st test' do
  end
end

describe 'this is 2nd test' do
  it 'runs 2nd test' do
  end
end

end

Проблема в том, что это утверждение никогда не печатается: «сделайте это перед всеми тестами».

Я ожидаю, что это должно запускаться один раз перед всеми тестами. Блок «до (: каждый)» работает должным образом.


person codebee    schedule 12.12.2017    source источник


Ответы (1)


Это может быть неуклюжим, но вы можете попробовать:

RSpec.describe '#bunch_of_tests' do

  before(:all) do
    p 'do this before all tests'
  end

  describe "before each" do 
    before(:each) do
      p 'do this before each test'
    end

    describe 'this is 1st test' do
      it 'runs 1st test' do
      end
    end

    describe 'this is 2nd test' do
      it 'runs 2nd test' do
      end
    end
  end

end

Который дает:

#bunch_of_tests
"do this before all tests"
  before each
    this is 1st test
"do this before each test"
      runs 1st test
    this is 2nd test
"do this before each test"
      runs 2nd test

Finished in 0.40184 seconds (files took 3.5 seconds to load)
2 examples, 0 failures
person jvillian    schedule 12.12.2017
comment
Я использую Минитест. Когда я попробовал ваш способ, он печатает это после каждого теста: «сделайте это перед всеми тестами» и вообще не печатает «сделайте это перед каждым тестом». - person codebee; 13.12.2017
comment
Прошу прощения, вы абсолютно точно указали Minitest в своем заголовке, и я просто пропустил это. - person jvillian; 13.12.2017
comment
В качестве покаяния я сделал быстрый поиск. Вы смотрели эту статью? ? Кажется, это связано с вашим вопросом. - person jvillian; 13.12.2017
comment
Спасибо. Да, с этого я и начал, но у них не было примеров того, что я пытаюсь сделать, хотя это кажется интуитивно понятным по определению. - person codebee; 13.12.2017