1
0

Rspecにてcreated_atの検証で失敗する

Posted at

はじめに

RspecにてJSON形式のレスポンスデータを検証している際に、
created_atupdated_atにてデータが一致しないことで困っていた

困ってたこと

データ形式:

{
    'key' => 'value',
    'created_at' => 'instance.created_at',
    'updated_at' => 'instance.updated_at',
}

Timeオブジェクトはミリ秒の値まで含んでしまっているため、
データが一致せずにテストが落ちてしまう

# 期待していたデータ
"created_at" => "2024-08-26T10:35:23+09:00"

# 実際に来たデータ
"created_at" => "2024-08-26T10:35:23.000+09:00"

as_jsonで試してみた

as_jsonではハッシュ形式に変換してくれるらしい

created_atやupdated_atで比較するには、as_jsonを使うと良い

# as_jsonを使用した場合
hogehoge.created_at.as_json
"2024-08-26T11:23:03.000+09:00"

hogehoge.created_at
Mon, 26 Aug 2024 11:23:03 JST +09:00

be_jsonにしたほうが良さそう

毎回、created_atやupdated_atに対して as_json を使用するのはちと大変...
そんなこんなで、RSpec3にはコンポーザブルマッチャとなるものがあるみたい

expect(response.body).to be_json include(...)

どこかのタイミングで上記の書き方でJSONを比較するようにしたい

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0