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 的用户为无法自动检测的情况明确激活无睡眠模式。
所以我做了一个 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 的用户为无法自动检测的情况明确激活无睡眠模式。