红宝石宝石的特定测试行为 - 嘲笑睡眠

时间:2015-06-13 00:16:49

标签: ruby rspec gem

所以我制作了一个使用sleep函数的ruby gem。在我的应用程序中使用gem会导致在我的测试中调用sleep函数。

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

谢谢

2 个答案:

答案 0 :(得分:2)

正如您所说,很难知道您是否真的处于类似测试的环境中,因此解决方案不是尝试:提供一种方法,允许您的gem用户指示不应发生睡眠。

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

答案 1 :(得分:0)

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

allow_any_instance_of(Object).to receive(:sleep)

Object替换为您所测试的班级名称。