Почему переменные экземпляра класса сохраняются в разных спецификациях? - PullRequest
0 голосов
/ 07 ноября 2018

Я использую переменные экземпляра класса для отслеживания @instances. Когда я запускаю каждую спецификацию отдельно, они проходят Но когда я запускаю все вместе, происходит неожиданное поведение.

it "returns 1" do
  mock = Mock.new
  expect(Mock.count).to eq(1)
end

it "returns 2" do
  mock = Mock.new
  mock = Mock.new
  expect(Mock.count).to eq(2)
end

Когда я бегу по отдельности, все характеристики зеленые. Но когда я запускаю оба, вторая спецификация возвращает счет 3. Итак, я вижу, что Mock как-то сохраняется в разных спецификациях. Я использую обычный рубин, без БД, рельсов или чего-то еще.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Я нашел решение!

before do
  @Mock = Class.new.include(IDable)
end

Тогда каждый раз, когда @Mock используется, у него будут свежие переменные экземпляра класса!

0 голосов
/ 07 ноября 2018

Это то, что переменные экземпляра класса делают . Это состояние самого класса, которое обычно сохраняется в течение всего жизненного цикла приложения (или, в вашем случае, запуска набора тестов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...