Di Rails, serializer memungkinkan Anda untuk menyesuaikan data alih-alih memiliki render default.
Pada artikel ini, kita akan melihat panduan langkah demi langkah untuk menggunakan serializer di aplikasi Anda. Berikut dengan implementasi Rspec pada Serializer.
1. Tambahkan gem serializer pada Gemfile
gem 'active_model_serializers'kembali ke terminal dan run 
 bundle install 2. membuat sebuah file Serializer
 bundle exec rails g serializer Customeredit app/serializers/customer.rb tambahkan validasi
 class Customer < ActiveModel::Serializer  
  attributes :name, :email
 end  pada contoh file diatas response pada json customer akan menampilkan attributes name & email.
fungsi file serializer sendiri dapat digunakan untuk mengkustom response sesuai kebutuhan response pada front end.
3. Install Factory Bot
Tambahkan gem factory bot pada Gemfile pada group :development, :test
gem 'factory_bot_rails'
4. Konfigurasi factory bot
Berhubungan dengan tutorial sebelumnya pada tutorial ini Kita masih menggunakan model Customer.rb.
lalu buka terminal unutk membuat file factory pada folder rspec dengan menjalankan command
rails g factory_bot:model customer
setelah menjalankan command diatas, otomatis akan terbuat file seperti ini
setelah file spec/factories/customers.rb terbuat
konfigurasi file factory customers.rb seperti dibawah
FactoryBot.define do 
  factory :customer do |f|
    f.name {Faker::Name.name}
    f.email {Faker::Internet.email}
   end
end 5. Konfigurasi RSpec dengan Serializer & Factory Bot
tambahkan folder dan file seperti ini spec/support/serializer_spec_helper.rb
lalu tambahkan baris kode seperti dibawah
module SerializerSpecHelper
  def serialize(obj, opts={})
    serializer_class = opts.delete(:serializer_class) || "#{obj.class.name}Serializer".constantize
    serializer = serializer_class.send(:new,obj)
    adapter = ActiveModelSerializers::Adapter.create(serializer, opts)
    adapter.to_json 
  end  
end RSpec.configure do |config|
 config.include FactoryBot::Syntax::Methods  
end  Dir [Rails.root.join('spec', 'support', '**', '*.rb'].sort.each { |f| require f}
 RSpec.configure do |config| #sisipkan kode dibawah 
 config.include SerializerSpecHelper, type: :serializer Contoh kasus front end membutuhkan response data seperti berikut:
[  {        "name": "Persada Ersad",        "email": "ersad@doterb.com"    }]require 'rails_helper'  
 RSpec.describe CustomerSerializer, :type => :serializer do
  customer = FactoryBot.create(:customer)
  serializer = CustomerSerializer.new(customer)
  describe 'attributes' do
    it { expect(serializer).to include(:name, :email) }
    it 'returns data should be contain name and email' do
      expect(serializer).to include(
        name: customer.name,
        email: customer.email
      )
    end
  end
end Selanjutnya balik ke terminal dan ketikan command
rspec
Kita coba untuk mempraktekan jika ada kesalahan data pada response CustomerSerializer
pada file app/serializers/customer_serializer.rb hapus kode ':email'
class CustomerSerializer < ActiveModel::Serializer
  attributes :name
end
Selanjutnya balik ke terminal dan ketikan command
rspechasilnya akan ada failure test seperti dibawah ini:
Selamat mencoba & Cheers :D
Tutorial Created By: Doterb | Persada Ersad




 




