1. mightysosuke

    Posted

    mightysosuke
Changes in title
+ActiveModel::SerializerのRspec
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,39 @@
+### はじめに
+
+SerializerのRSpecについて備忘録で残しておきます。
+
+参考にしたのは[こちらのドキュメント](https://www.rubydoc.info/gems/active_model_serializers/0.9.4)
+
+### ソースコード
+
+Serializerを使って、`id`、`name`、`email`のみを返すjsonを実装しました。
+
+```rb:user_serializer.rb
+class UserSerializer < ActiveModel::Serializer
+ attribute :id
+ attribute :name
+ attribute :email
+end
+```
+
+そのテストコードがこちら
+
+ポイントだと思うところはこちらの2つ
+1. **Serializerのインスタンス**を生成する必要がある
+2. **`.to_json`メソッドのオプション**を使用して、返ってくるデータのカラムを指定する必要がある
+
+アソシエーションがある場合は、`include`オプションを利用するとうまいこと書けると思います。
+
+```rb: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
+```