Skip to main content
added 787 characters in body
Source Link

By looking at answers , I change it to below.

 require 'rails_helper' RSpec.describe Users::SessionsController, type: :controller do describe 'adds 2 point with login' do before do @user=create(:user) @request.env["devise.mapping"] = Devise.mappings[:user] end it 'adds 2 point in one day if two times login' do expect{post :create, params: {email: @user.email ,password: @user.password} }.to change {@user.points(true)}.by(0) end it 'adds 4 point in two day ' do expect{post :create, params: {email: @user.email ,password: @user.password} }.to change {@user.points(true)}.by(2) end end end 

By looking at answers , I change it to below.

 require 'rails_helper' RSpec.describe Users::SessionsController, type: :controller do describe 'adds 2 point with login' do before do @user=create(:user) @request.env["devise.mapping"] = Devise.mappings[:user] end it 'adds 2 point in one day if two times login' do expect{post :create, params: {email: @user.email ,password: @user.password} }.to change {@user.points(true)}.by(0) end it 'adds 4 point in two day ' do expect{post :create, params: {email: @user.email ,password: @user.password} }.to change {@user.points(true)}.by(2) end end end 
added 193 characters in body
Source Link

I implemented point system. User.point increases by 2 when he does login. My devise session controller is below.

 class Users::SessionsController < Devise::SessionsController after_action :add_point, only: [:create] # POST /resource/sign_in def create super end private def add_point resource.rewards.create(point: 2) end end 

and My spec/controllers/users_controller_spec.rb is below.

RSpec.describe UsersController, type: :controller do describe 'adds 2 point with login' do before do @user=create(:user) end it 'adds 2 point in one day if two times login' do expect{login_user(@user)}.to change {@user.points}.by(0) end it 'adds 4 point in two day ' do expect{login_user(@user)}.to change {@user.points}.by(2) end end end 

and my model/user.rb is below.

 class User < ActiveRecord::Base def points self.rewards.sum(:point) end end 

When I did rspec command , I had this error.

 Failure/Error: expect{login_user(@user)}.to change {@user.points}.by(2) expected result to have changed by 2, but was changed by 0 

I confirmed that @user.points increased by 2 in rails/console. Why do I have this error? Please tell me.

I implemented point system. User.point increases by 2 when he does login. My devise session controller is below.

 class Users::SessionsController < Devise::SessionsController after_action :add_point, only: [:create] # POST /resource/sign_in def create super end private def add_point resource.rewards.create(point: 2) end end 

and My spec/controllers/users_controller_spec.rb is below.

RSpec.describe UsersController, type: :controller do describe 'adds 2 point with login' do before do @user=create(:user) end it 'adds 2 point in one day if two times login' do expect{login_user(@user)}.to change {@user.points}.by(0) end it 'adds 4 point in two day ' do expect{login_user(@user)}.to change {@user.points}.by(2) end end end 

When I did rspec command , I had this error.

 Failure/Error: expect{login_user(@user)}.to change {@user.points}.by(2) expected result to have changed by 2, but was changed by 0 

I confirmed that @user.points increased by 2 in rails/console. Why do I have this error? Please tell me.

I implemented point system. User.point increases by 2 when he does login. My devise session controller is below.

 class Users::SessionsController < Devise::SessionsController after_action :add_point, only: [:create] # POST /resource/sign_in def create super end private def add_point resource.rewards.create(point: 2) end end 

and My spec/controllers/users_controller_spec.rb is below.

RSpec.describe UsersController, type: :controller do describe 'adds 2 point with login' do before do @user=create(:user) end it 'adds 2 point in one day if two times login' do expect{login_user(@user)}.to change {@user.points}.by(0) end it 'adds 4 point in two day ' do expect{login_user(@user)}.to change {@user.points}.by(2) end end end 

and my model/user.rb is below.

 class User < ActiveRecord::Base def points self.rewards.sum(:point) end end 

When I did rspec command , I had this error.

 Failure/Error: expect{login_user(@user)}.to change {@user.points}.by(2) expected result to have changed by 2, but was changed by 0 

I confirmed that @user.points increased by 2 in rails/console. Why do I have this error? Please tell me.

Source Link

Rspec test error in devise session #create

I implemented point system. User.point increases by 2 when he does login. My devise session controller is below.

 class Users::SessionsController < Devise::SessionsController after_action :add_point, only: [:create] # POST /resource/sign_in def create super end private def add_point resource.rewards.create(point: 2) end end 

and My spec/controllers/users_controller_spec.rb is below.

RSpec.describe UsersController, type: :controller do describe 'adds 2 point with login' do before do @user=create(:user) end it 'adds 2 point in one day if two times login' do expect{login_user(@user)}.to change {@user.points}.by(0) end it 'adds 4 point in two day ' do expect{login_user(@user)}.to change {@user.points}.by(2) end end end 

When I did rspec command , I had this error.

 Failure/Error: expect{login_user(@user)}.to change {@user.points}.by(2) expected result to have changed by 2, but was changed by 0 

I confirmed that @user.points increased by 2 in rails/console. Why do I have this error? Please tell me.