首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用timecop包围shared_example的Rspec

用timecop包围shared_example的Rspec
EN

Stack Overflow用户
提问于 2017-08-18 15:51:48
回答 1查看 1.2K关注 0票数 0

我试图将Timecop封装在我编写的shared_example规范中

代码语言:javascript
复制
describe "timecop wrapping shared example" do
   Timecop.freeze(1.day.ago) do
      it_behaves_like "a shared example i would like to test using timecop"
   end
end

shared_examples "a shared example i would like to test using timecop"
   before :all do
      puts "the current time is #{Time.now}"
   end

   ... expect ...
end

但是运行这个规范仍然使用实时的,而不是冻结的。

Timecop能这样工作吗?

否则,我如何包装我的测试文件的大片段,但改变它运行的时间。

EN

回答 1

Stack Overflow用户

发布于 2017-08-19 00:13:00

Timecop需要在it块内或之前块中执行。

以下更改将解决您的问题。

describe "timecop wrapping shared example" do before { Timecop.freeze(1.day.ago) } it_behaves_like "a shared example i would like to test using timecop" end

Rspec将在运行每个示例后重置环境(包括Timecop)。

我在测试中发现了一些在时间旅行中可能有用的技巧:

  • Timecop.travel更能反映您的代码在现实生活中的工作方式,因为时间永远不会静止。你可以用和冷冻一样的方式,只需把冷冻方法换成旅行。
  • 如果您有Rails 4.1或更高版本,那么内置了很好的时间旅行工具,您可以丢弃timecop。这是一个博客帖子医生们,如果您想了解更多的话。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45760594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档