所以我制作了一个使用sleep
函数的ruby gem。在我的应用程序中使用gem会导致在我的测试中调用sleep函数。
处理此问题的首选方法是什么?现在,我在应用程序中嘲笑睡眠,但有没有办法在实际的宝石代码中禁用测试环境的睡眠?我不认为我可以使用RACK_ENV
,因为gem不是特定于Web应用程序的。
谢谢
答案 0 :(得分:2)
正如您所说,很难知道您是否真的处于类似测试的环境中,因此解决方案不是尝试:提供一种方法,允许您的gem用户指示不应发生睡眠。
你可以尝试自动检测你是否应该默认不睡觉(例如,如果它看起来像是加载了rails并且Rails.env.test?
为真),同时仍然允许你的gem用户明确激活没有睡眠模式的情况你无法自动检测。
答案 1 :(得分:0)
您可以像任何其他方法一样存根sleep
:
allow_any_instance_of(Object).to receive(:sleep)
将Object
替换为您所测试的班级名称。