rspec-json_matcher
#call / #=== に対応することにより期待する値を柔軟に書くことが出来るようになっている
JSONの値が期待している値と異なる場合にいい感じにエラーメッセージを表示する
3種のマッチャーがある
be_json
be_json_as
be_json_including
内部の実装的には2種のマッチャー
コレクションの比較の has_same_collection? の実装が異なる
ExactMatcher
collection? && has_same_class? && has_same_keys? && has_same_values?
has_same_keys? がある
FuzzyMatcher
collection? && has_same_class? && has_same_values?
比較内容はhas_same_value? || has_same_collection?
has_same_value?
=== メソッドを使って比較する
callメソッドに実際の値を渡して呼び出される
期待する値か調べるためのProcを引数に渡すことが出来る
has_same_class?
単純にクラスを比較
has_same_keys?
キーをソートしてから比較
つまりJSONのキーがどの順序で出現するかは気にしない
has_same_values?
値を繰り返しながら比較
all? を使っているので期待している値と違う値が現れた瞬間終わる
パースできなかったときに実際の文字列はでなさそう