Выполнить после блока после конкретного теста в Rspec - PullRequest
0 голосов
/ 05 июня 2018

Есть ли способ запустить блок после / перед после / перед определенным тестом, используя метки?

У меня есть 3 it блоков

describe "describe" do

  it "test1" do
  end

  it "test2" do
  end

  after(<<what goes here??>>) do
  end

end

Как мне запуститьпосле блока только после test2?Это возможно?

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Вы должны использовать context s, чтобы сделать это.Что-то вроде:

describe "describe" do
  context 'logged in' do
    before(:each) do
      # thing that happens in logged in context
    end

    after(:each) do
      # thing that happens in logged in context
    end

    it "test1" do
    end
  end

  context 'not logged in' do
    # No before/after hooks here. Just beautiful test isolation

    it "test2" do
    end
  end
end

Наличие условий if / else в блоках до / после является запахом кода.Не делай так.Это сделает ваши тесты хрупкими, подверженными ошибкам и трудными для изменения.

0 голосов
/ 05 июня 2018

Лучший способ сделать это - просто использовать context.Для вашего примера:

describe "AutomateFr33k's fr33ky tests" do

  it "runs test1" do
    expect(true).to be_true
  end

  context "do something afterwards" do
    after { puts "running something after test2!" }

    it "runs test2" do
      expect(5).not_to eq(4)
    end
  end
end
0 голосов
/ 05 июня 2018

Да, вы можете сделать это, посмотрите здесь

Вы можете добиться этого, используя metadata в rspec

RSpec.configure do |config|
  config.treat_symbols_as_metadata_keys_with_true_values = true
end

describe "Skip hook demo" do
  # If prior to RSpec 2.99.0.beta1
  after do
    puts "before hook" unless example.metadata[:skip]
  end

  # If RSpec 2.99.0.beta1 or later
  after do |example|
    puts "before hook" unless example.metadata[:skip]
  end

  it "will use before hook" do
  end

  it "will not use before hook", :skip do
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...