如何为 Rails 控制器添加延迟以进行测试?

Posted

技术标签:

【中文标题】如何为 Rails 控制器添加延迟以进行测试?【英文标题】:How to add a delay to Rails controller for testing? 【发布时间】:2011-10-29 05:59:01 【问题描述】:

我正在测试 Web 应用程序的前端,并想测试在 AJAX 请求之间出现各种延迟时,某些转换是如何出现的。有什么办法可以在控制器中添加sleep(1500) 以延迟响应?

【问题讨论】:

只需将 sleep(1000) 调用添加到您的控制器操作即可。 RoR 中睡眠的默认单位是!!为控制器添加了 sleep 1.5,生活很好。谢谢:) 【参考方案1】:

像这样的控制器:

def catalog
  #Makes the request pause 1.5 seconds
  sleep 1.5

  ...
end

更好的是:只为开发环境添加睡眠。

【讨论】:

【参考方案2】:

详细说明接受的答案。如果您有一些基本控制器,例如默认的 ApplicationController,它由任何其他控制器扩展,您可以定义以下过滤器:

class ApplicationController < ActionController::Base

  # adds 1s delay only if in development env
  before_action if: "Rails.env.development?" do
    sleep 1
  end
end

在哪里: 1 是在返回任何响应之前等待的秒数,请参阅 sleep docs

此过滤器仅在您的应用程序处于开发环境时才会触发,它会为您的应用程序处理的每个请求添加所需的延迟 .

【讨论】:

以上是关于如何为 Rails 控制器添加延迟以进行测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 rspec 设置 ENV 变量?

如何为控制多个散景图形添加一个图例?

如何为Apache JMeter开发插件

Rails/Rspec:测试延迟作业邮件

如何为 Alexa 技能调用配置 MQTT (AWS IoT) 测试控制台?

如何延迟 Rails 控制器操作,直到 Stripe 的 webhook 成功?