How do i write a test case using rspec for private method
Hello I,m new to rails
I am writing test cases for using rspec gem
In my controller I have edit function. I have before action for edit function
This is my controller
before_action :authorize_user, only: %i[edit update destroy]
def edit
end
**private**
def authorize_user
id = Question.find(params[:id]).user_id
redirect_to root_path if id != current_user.id
end
This is my rspec/requests/question_rspec.rb
describe "GET /edit" do
before do
sign_in(create(:user)) # Factory Bot user
end
it "render a successful response" do
question = create(:question) #Factory bot question
# question.user = current_user
question.save
get edit_question_url(question)
expect(response).to be_successful
end
end
I'm getting an error like
Failure/Error: expect(response).to be_successful
expected `#<ActionDispatch::TestResponse:0x00005652448f4c50 @mon_data=#<Monitor:0x00005652448f4c00>, @mon_data_..., @method=nil, @request_method=nil, @remote_ip=nil, @original_fullpath=nil, @fullpath=nil, @ip=nil>>.successful?` to be truthy, got false
# ./spec/requests/questions_spec.rb:105:in `block (3 levels) in <main>'
Could anyone please let me know
All the resources that you mention, but the proper "theoretical" https://testmyspeed.onl/ way to do it would be to test that @client receives add_message_callback, and then indirectly test your private methods with integration tests.