RSpec Stub не охватывает несколько вложенных блоков Describe - PullRequest
1 голос
/ 08 декабря 2011

У меня есть набор тестов, структурированный следующим образом:

describe ... do
  [list of dates].each do
    describe
      before(:all) do
        base_date = ...
      end
      describe ... do
        [list of times].each do
          describe ... do
            before(:all) do
              base_time = base_date + ...
              DateTime.stub!(:now).and_return(base_time)
            end
            describe ... do
              <test using records within date-time range based on base_time>
            end
            describe ... do
              <another test using records within date-time range based on base_time>
            end
          end
        end
      end
    end
  end
end

Первый тест имеет DateTime (сейчас) == base_time, но второй тест как DateTime (сейчас) == дата-время моего компьютера,показывая, что заглушка больше не действует.Перемещение вызова stub! в каждый цикл describe решает проблему, но я хотел бы понять, почему он не работает так, как написано.

1 Ответ

0 голосов
/ 18 октября 2012

Причина кроется, вероятно, в другом месте, заглушки отлично работают с несколькими вложенными блоками описания. Возможно: все против: каждый является проблемой: before(:all) выполняется один раз перед выполнением всех описывающих блоков, тогда как before(:each) выполняется каждый раз перед выполнением описательного блока.

Или, может быть, это как-то связано с заглушкой DateTime, вы пробовали

DateTime.any_instance.stub(:now).and_return(base_time)
...