gpt4 book ai didi

ruby - Rails 使用什么 sleep()?

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:51 27 4
gpt4 key购买 nike

我正在测试一段 Rails 代码,上面写着:

sleep(10.0)

在我的 RSpec 测试中,调用:

Kernel.should_receive(:sleep).exactly(1).time

失败,测试休眠了十秒。这使我得出结论,Rails 程序中的 sleep() 并未调用 Kernel.sleep()。我通过将我的 Rails 代码更改为以下内容来验证这一点:

Kernel.sleep(10.0)

...之后我的 RSpec 测试通过了(并且测试没有休眠)。

这引出了一个具体的和一般的问题:

  • Rails 使用什么 sleep() 实现(我运行的是 Ruby 1.9.3/Rails 3.2.1)?
  • 对于解释器,找到任何函数的源代码的最简单方法是什么?

最佳答案

隐式接收器,当您没有指定显式接收器时,是 self,而不是 Kernel。 (你为什么会这么想?)

所以,

sleep(10.0)

大致相同
self.sleep(10.0)

完全一样

Kernel.sleep(10.0)

所以,它正在调用 Kernel#sleepself 上而不是在 Kernel 上。这意味着您需要对该特定方法中的任何对象 self 设置期望值。

关于ruby - Rails 使用什么 sleep()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11310312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com