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

时间:2011-08-17 20:04:27

标签: ruby-on-rails ruby ajax ruby-on-rails-3 testing

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

2 个答案:

答案 0 :(得分:75)

控制器如此:

def catalog
  #Makes the request pause 1.5 seconds
  sleep 1.5

  ...
end

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

答案 1 :(得分:14)

阐述已接受的答案。如果你有一些像任何其他控制器扩展的默认ApplicationController的基本控制器,你可以定义以下过滤器:

class ApplicationController < ActionController::Base

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

其中: 1 是返回任何回复之前等待的秒数,请参阅sleep docs

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