RSpec Stub不包含多个嵌套的Describe块

时间:2011-12-07 20:01:41

标签: ruby-on-rails rspec stubbing

我的测试套件结构如下:

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(now)== base_time,但是第二个测试是DateTime(现在)==我的计算机的日期时间,表明存根不再有效。将stub!调用移动到每个describe循环可以解决问题,但我想了解为什么它不能像写的那样工作。

1 个答案:

答案 0 :(得分:0)

原因可能在其他地方,存根可以与多个嵌套的描述块一起使用。也许:所有vs:每个都是问题:before(:all)在执行所有描述块之前执行一次,而每次执行描述块之前执行before(:each)

或者它可能与存根DateTime有关,你试过吗

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