下準備としてモデルのSchemeとFactoryの定義
ActiveRecord::Schema.define(version: 2020_11_23_064724) do
create_table "users", force: :cascade do |t|
t.string "name"
t.integer "age"
t.string "mail"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
end
FactoryBot.define do
factory :user do
name { 'テストユーザー' }
mail { 'test@example.com' }
end
end
テストでattributes_forを使ってみる
require 'rails_helper'
RSpec.describe UsersController do
describe 'attributes_forとbuild(:user).attributesの違い' do
it 'attributes_forで取り出されるハッシュにはFactoryに定義した属性しか含まれない' do
expect(attributes_for(:user)).to eq({:name=>"テストユーザー", :mail=>"test@example.com"})
end
it 'build(:user).attributesにはFactoryに定義した値以外も含まれる' do
expect(build(:user).attributes).to eq({"id"=>nil, "name"=>"テストユーザー", "age"=>nil, "mail"=>"test@example.com", "created_at"=>nil, "updated_at"=>nil})
end
end
end
参考
qiita.com
qiita.com