如何在Rails database.yml中测试postgresql语句超时配置?

时间:2019-07-03 04:36:31

标签: ruby-on-rails timeout minitest postgresql-11

我需要添加一些测试套件来声明Rails database.yml的配置。我已将db语句超时配置为2000ms,我需要一种方法来断言该配置正在通过测试用例进行工作。

有2种测试方法:

  1. 验证database.yml语句超时是否配置为2500ms,但不检查配置是否正常?
  2. 向sql发送一条耗时超过2500毫秒的语句,并断言引发了异常。
ActiveRecord::Base.connection.execute(<<~SQL)
  select pg_sleep(86400);
SQL

此代码将引发异常,但实际上会执行2500ms引发异常,因此我需要一种无需等待即可断言的方法 2500毫秒。

ActiveRecord::Base.connection.execute(<<~SQL)
  select pg_sleep(86400);
SQL

1 个答案:

答案 0 :(得分:0)

根据定义,如果没有等待超时,就无法测试超时是否正常工作。

您可以做的是,为测试环境专门设置一个较小的超时值 (例如500ms),并断言在睡眠600ms后会引发异常。