Как изолировать и протестировать динамически созданные классы в rspec - PullRequest
0 голосов
/ 07 марта 2020

Как правильно создать новый изолированный класс для каждого теста, используя rspe c 3.9.0?

Вот тестовый пример:

describe 'Dynamic Class Creation' do

  it "should have dynamically created class 'One'" do
    class One; end
    expect(One).to be_an_instance_of(Class)
  end

  it "should not have class 'One' and raise 'uninitialized constant One' error" do
    expect { One }.to raise_error(an_instance_of(NameError).and having_attributes(message: 'uninitialized constant One'))
  end

end

1 Ответ

0 голосов
/ 07 марта 2020

Окей, я действительно понял, как решить мою собственную проблему. Я выложу решение здесь, для всех, кому это нужно:

describe 'Dynamic Class Creation' do

  after :each do
    Object.send(:remove_const, :One) if Object.const_defined?(:One)
  end

  it "should have dynamically created class 'One'" do
    class One; end
    expect(One).to be_an_instance_of(Class)
  end

  it "should raise 'uninitialized constant One' error" do
    expect { One }.to raise_error(an_instance_of(NameError).and having_attributes(message: 'uninitialized constant One'))
  end

end
...