- 関連: system specでNet::ReadTimeoutになったら - おもしろwebサービス開発日記チラシの裏
- やっぱりタイムアウトの時間を伸ばすのではなく、テスト側でバリデーションの条件を緩和してあげたほうがトータルのテスト実行時間が短くなっていいんじゃないか、と思って次のようにした
- (設定はpalkan/anyway_config: Configuration library for Ruby gems and applicationsを使っています)
class DailyReport < ApplicationRecord validates :body, presence: true, length: { maximum: -> { ValidationConfig.daily_report[:body][:maximum] } } end
around do |example| original = ValidationConfig.daily_report[:body][:maximum] ValidationConfig.daily_report[:body][:maximum] = 10 example.run ValidationConfig.daily_report[:body][:maximum] = original end
- rails5.2から、maximumにlambdaを渡して動的に条件を変えられるようになっている
- また、rails7.1からは引数なしのlambdaでも受け付けられるようになっている