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

RSG*_*RSG 42 ruby testing ajax ruby-on-rails ruby-on-rails-3

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

RSG*_*RSG 77

控制器如此:

def catalog
  #Makes the request pause 1.5 seconds
  sleep 1.5

  ...
end
Run Code Online (Sandbox Code Playgroud)

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


jma*_*eli 15

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

class ApplicationController < ActionController::Base

  # adds 1s delay only if in development env
  before_filter if: "Rails.env.development?" do
    sleep 1
  end
end
Run Code Online (Sandbox Code Playgroud)

其中: 1是返回任何响应之前等待的秒数,请参阅睡眠文档

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