はじめに
SerializerのRSpecについて備忘録で残しておきます。
参考にしたのはこちらのドキュメント
ソースコード
Serializerを使って、id
、name
、email
のみを返すjsonを実装しました。
user_serializer.rb
class UserSerializer < ActiveModel::Serializer
attribute :id
attribute :name
attribute :email
end
そのテストコードがこちら
ポイントだと思うところはこちらの2つ
- Serializerのインスタンスを生成する必要がある
-
.to_json
メソッドのオプションを使用して、返ってくるデータのカラムを指定する必要がある
アソシエーションがある場合は、include
オプションを利用するとうまいこと書けると思います。
user_serializer_spec.rb
require 'rails_helper'
RSpec.describe "UserSerializer", type: :serializer do
context "when create user" do
let(:user) { create(:user) }
it "matches to serialized JSON" do
serializer = UserSerializer.new(user)
expect(serializer.to_json).to eq(user.to_json(:only => [:id, :name, :email]))
end
end
end