【问题标题】:RSpec Stub doesn't cover multiple nested Describe blocksRSpec Stub 不涵盖多个嵌套的 Describe 块
【发布时间】:2012-01-15 08:14:01
【问题描述】:

我有一个结构如下的测试套件:

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

【问题讨论】:

  • 如果你用before(:each)替换你的before(:all)会怎么样

标签: ruby-on-rails rspec stubbing


【解决方案1】:

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

或者它可能与存根日期时间有关,你尝试过吗

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多