Hi Deep, Using `params` is ok. However, if you're expecting a JSON response, you have to add this to the request. https://relishapp.com/rspec/rspec-rails/v/4-0/docs/request-specs/request-spec#requesting-a-json-response
On Tue, Jan 19, 2021 at 4:59 AM Deep Dhanak <deep.dha...@gmail.com> wrote: > > Hi Jack, > > Thank you for the quick response. I am currently writing a request spec; > however, when I write “get '/api/v1/repairs', params: { id: repair.id }", I > get text/html returned and not JSON. Not only that no breakpoint gets > triggered in my controller. > > I noticed that I can write this "get api_v1_path(repair)" instead and the > rspec will pass but as you mentioned, it seems I should use that syntax if I > write a feature spec. > > Again thanks for your help. > > Regards, > Deep > > On Mon, Jan 18, 2021 at 4:07 PM Jack Royal-Gordon <jac...@pobox.com> wrote: >> >> The answer depends on what kind of spec (controller, feature, request) you >> are writing, and what version of RSpec. >> >> My answer is for the newer versions of RSpec. Older versions may require you >> to remove the “params:" >> >> For controller specs, use: “get :action, params: {id: id}” where “action” is >> the controller action routed to by the URL. >> >> For request specs, use “get ‘/api/v1/repairs’, params: {id: id}" >> >> For feature specs, use “visit url” and I suppose you can use the >> capabilities of Rails path helpers (including #url_for) or just add it to >> the URL (e.g. “/api/v1/repairs?id=#i{id}"), but I can’t find any write-ups >> about testing APIs with feature specs, so I’m not sure this really makes >> sense. >> >> >> On Jan 17, 2021, at 7:43 PM, Frozensoil <deep.dha...@gmail.com> wrote: >> >> Hi, >> >> I am just getting started with Rails & Rspec. I have something that looks >> like this currently in a request spec: >> >> describe 'GET repairs/index/1' do >> let!(:repair) { FactoryBot.create(:repair) } >> >> before do >> # TODO: check if there is a better way to call the get here >> get '/api/v1/repairs/' + repair.id.to_s >> end >> >> it 'returns status code 200' do >> expect(response).to have_http_status(200) >> end >> >> it 'returns a valid json response' do >> expect(response.content_type).to eq('application/json; charset=utf-8') >> end >> >> it 'returns the first repairs' do >> # TODO: currently json return 6 attributes, that is why we have eq(6), we >> should validate attributes of object >> expect(JSON.parse(response.body).size).to eq(6) >> end >> end >> >> It does work; however, I am trying to understand to see how I can first >> build the GET request in a better way. Also, the get request returns a JSON, >> should I parse the JSON into a repair object and expect on the model >> attributes? >> >> Thanks! >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "rspec" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to rspec+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/rspec/270ce60b-8e73-49ea-8b34-96db0ddfbb44n%40googlegroups.com. >> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "rspec" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/rspec/Bkrojb8TGKA/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> rspec+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/rspec/5F96496F-1F0A-4F96-A8CB-9AEB3114042C%40pobox.com. > > -- > You received this message because you are subscribed to the Google Groups > "rspec" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rspec+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/CAKW5Rd%3DaQ6j_Pu3e51_4CctR3irMo60zzmSSREk15Fg5Ae%2BWwg%40mail.gmail.com. -- You received this message because you are subscribed to the Google Groups "rspec" group. To unsubscribe from this group and stop receiving emails from it, send an email to rspec+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rspec/CAAk5Ok8F27TDPhegQZ5B7cgcN%3Dbd-7vmMyF94EOMjg2uVeSY3w%40mail.gmail.com.