ruby gem 的特定测试行为 -- 模拟睡眠

Specific test behaviour for ruby gem -- mocking sleep

所以我做了一个 ruby gem 来利用 sleep 函数。在我的应用程序中使用 gem 会导致在我的测试中调用睡眠函数。

处理此问题的首选方法是什么?现在,我正在应用程序中模拟睡眠,但有没有办法在实际 gem 代码中禁用测试环境的睡眠?我不认为我可以使用 RACK_ENV 因为 gem 不是特定于网络应用程序。

谢谢

您可以像任何其他方法一样存根 sleep

allow_any_instance_of(Object).to receive(:sleep)

Object 替换为你的 class 被测者的名字。

正如你所说,很难知道你是否真的处于类似测试的环境中,所以解决方案是不要尝试:提供一种方法,让你的 gem 用户表明睡眠应该不会发生。

您可以尝试自动检测是否应该默认不休眠(例如,如果看起来 rails 已加载且 Rails.env.test? 为真),同时仍然允许 gem 的用户为无法自动检测的情况明确激活无睡眠模式。