лучший способ реализовать предварительные / последующие условия в тестах rspec - PullRequest
1 голос
/ 05 июля 2011

Это все о подходе ООП + АОП (знакомый мне) и rspec подход (менее знакомый мне).Вот код моего типичного теста.Код находится в каждом тестовом файле (их много):

describe "Testing... " do

before(:each) do
  assert_no_application_errors
end

after(:each) do
  assert_no_application_errors
end

it "Test1" do
  begin
    ...
  rescue => e
    puts e, e.backtrace
    print_log
    raise
  end
end # it

...

end # describe
  1. Как видите, before(:each) и after(:each) одинаковы в каждомкаждый тестовый файл.Итак, вопрос 4 заключается в том, могу ли я написать их в одном месте, что будет хорошо для всех тестовых файлов.

  2. Если N1 возможен - что произойдет, если в каком-то файле это будетНужно ли применять дополнительные шаги в before(:each) или after(:each)?Будет ли новое объявление заменять или улучшать предыдущее?

  3. Часть rescue также одинакова в каждом тесте в одном файле и в другомфайлы.Как правильно разместить его в одном месте?

  4. Любой другой совет, касающийся того, как сделать все правильно, будет более чем приветствоваться.

Спасибо!

1 Ответ

1 голос
/ 05 июля 2011

Если вы хотите, чтобы эти утверждения запускались для каждого теста, который у вас есть, вам следует настроить глобальный обратный вызов:

RSpec.configure do |config|
  config.around do
    assert_no_application_errors
  end
end

Просто добавьте это в ваш spec / spec_helper.rb и требуйте в каждомиз ваших spec-файлов.

Для получения дополнительной информации о "обходных" хуках прочитайте это: http://relishapp.com/rspec/rspec-core/v/2-6/dir/hooks/around-hooks

...