ruby-on-rails - 在不更改系统时钟的情况下在 rspec 测试中设置系统时间

标签 ruby-on-rails ruby rspec timezone clock

我正在努力让 Rails 3 应用程序准备好使用时区。我的开发机器在美国东部时间,我托管的服务器在 UTC。在我的 rspec 测试中有没有一种方法可以更改 ruby​​ 使用的系统时区,这样我就可以使用相同的系统时区运行测试,而不必更改我计算机上的系统时钟?我研究过 Delorean 和 Timecop,它们不是我要找的。我正在寻找类似的东西

Time.system_time_zone = "UTC"

...然后 Time.now 将返回 UTC 时间,而不是我的系统时区设置的时间。

最佳答案

before {Time.stub(:now) {Time.now.utc}}

有了这个,在您的测试中调用 Time.now 的任何地方,它都会以 UTC 格式返回您的系统时间。

例子:

describe Time do
  before {Time.stub(:now) {Time.now.utc}}

  it "returns utc as my system's time" do
    Time.now.utc?.should be_true
  end
end

关于ruby-on-rails - 在不更改系统时钟的情况下在 rspec 测试中设置系统时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974569/

相关文章:

ruby-on-rails - 在 Rails Controller 中处理所需参数的最佳方式?

ruby-on-rails - 设置乘客和铁路时的知识差距

ruby - 在 Ruby 中获取当前代码行

ruby-on-rails - ActionController::UrlGenerationError: 错误没有路由匹配

ruby-on-rails - 辅助测试中未定义的局部变量或方法 `main_app'

rspec - rails3 rspec 问题

ruby-on-rails - Heroku LoadError : libruby. so.2.2

ruby-on-rails - 模型的 Rails 数据库设计,可由多个模型之一使用

ruby - 为什么只有有限数量的正则表达式捕获存储在 `global_variables` 中?

java - 如何使用 JRuby 创建 Java applet?